242. 有效的字母异位词
给定两个字符串s和t,编写一个函数来判断t是否是s的
字母异位词。
字母异位词是通过重新排列不同单词或短语的字母而形成的单词或短语,并使用所有原字母一次。
示例 1:
输入: s = "anagram", t = "nagaram"
输出: true
示例 2:
输入: s = "rat", t = "car"
输出: false
提示:
- 1 <= s.length, t.length <= 5 * 10^4
- s 和 t 仅包含小写字母
进阶: 如果输入字符串包含 unicode 字符怎么办?你能否调整你的解法来应对这种情况?
解题思路
方式一:对两个字符串排序,排序后两个字符串相等,说明他们是字母异位词,因为字母出现个数都一致。
方式二:用哈希表,本题由于只有26个字母,所以可以用数组充当哈希表。
Go代码
func isAnagram(s string, t string) bool {
/*思路:字母异位词即两个单词中相同字母出现相同次数
由于都是小写字母,而字母就26个,故可以建立一个长度是26的数组
遍历s和t,s中某个字母出现了就将他对应的数组中那个位置加1,
而t相反,是减1,最后判断数组中每个元素是否为0即可*/
if len(s) != len(t) {
return false
}
arr := make([]int,26)
for i := 0;i < len(s);i++{
a := s[i] - 'a'
b := t[i] - 'a'
arr[a]++
arr[b]--
}
for i := 0;i < len(arr);i++ {
if arr[i] != 0 {
return false
}
}
return true
}

586

被折叠的 条评论
为什么被折叠?



