题目链接:LeetCode 242. 有效的字母异位词
题意:
本题是要判断两个字符串 s 和 t,是否是字母异位词,所谓字母异位次就是 如果 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。
解题思路:
首先我们很容易想到,最简单的思路就是先遍历一遍s字符串,统计出每个字母出现的次数,然后同样的遍历t字符串,统计出每个字母出现的次数,
最后判断两个字符串中,每个字母出现的次数是否是相同的。
代码如下:
func isAnagram(s string, t string) bool {
if len(s)!=len(t){
return false
}
ss:=make([]int,26)
tt:=make([]int,26)
for i,_:=range s{
ss[s[i]-'a']++
}
for i,_:=range t{
tt[t[i]-'a']++
}
for i:=0;i<26;i++{
if ss[i]!=tt[i]{
return false
}
}
return true
}
其实上面代码看着比较啰嗦,由于字母总共也就是26个小写字母,因此只用一个数组来记录每个字母出现的次数即可,
代码如下:
func isAnagram(s string, t string) bool {
//遍历s,每出现一个字母,对应的值+1,
//遍历t,每出现一个字母,对应的值-1,
//原数组是否恢复到声明时的状态。
// 最后判断 m 数组如果有的元素不为零0,说明字符串s和t一定是谁多了字符或者谁少了字符,return false。
// 最后如果 m 数组所有元素都为零0,说明字符串s和t是字母异位词,return true。
m:=[26]int{} //用来上记录字符串s里字符出现的次数。
for i,_ := range s{
m[s[i]-'a'] ++
}
for i,_ :=range t{
m[t[i] - 'a']--
}
return m == [26]int{}
}
标签:26,return,string,异位,字母,242,字符串,LeetCode
From: https://www.cnblogs.com/lxing-go/p/17379658.html