字母异位词
字母异位词即两个字符串中每种字符的个数相等,类似于同一个字符串不同的字符顺序,如:
aaabbccc和babaccac 是字母异位词
aaabb 和aabbb 则不是字母异位词
来源:https://leetcode-cn.com/problems/valid-anagram/
问题
判断两个字符串是否为字母异位词
思路
字母异位词具有一个特性就是:每种字符的个数相等
所以可以统计两个字符串中每种字符的个数,如果每种字符的个数相等,则是字母异位词
工具:map
实现
fun isAnagram(s: String, t: String): Boolean {
if (s.length != t.length) {//如果两个字符串长度都不一样,不用比了,肯定不是
return false
}
val sMap = HashMap<Char, Int>()
s.toCharArray().forEach {//遍历s字符串,统计其字符种类和个数
val value: Int? = sMap[it]
sMap[it] = if (value == null) 1 else value + 1
}
t.toCharArray().forEach {//再遍历t字符串
val value = sMap[it] ?: return false//t字符串中有字符在s中没有,则肯定不是字母异位词
sMap[it] = value - 1//将map中字符种类的个数减1,如果最后map中存在不为0的,则说明两个字符串的该字符种类的个数不一致
}
for (value in sMap.values) {
if (value != 0) {
return false
}
}
return true
}