这个题目主要是要知道啥叫异或词,看了下别人的分析
s="anagram", t="nagaram"
这就属于异位词,长度一样,包含的字母都一样,每个字符出现的频率也一样,只是顺序不同而已
s="rat",t="car"
这种就不属于异位词,因为s中的'r'在t中没有
然后看上面分析卡了一个点,原来两个字符串相同也是属于异或词
不过异或的含义是相同为假,不同为真┗|`O′|┛ 嗷~~!
a |
b |
a⊕b |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
0 |
class Solution {
public:
bool isAnagram(string s, string t) {
int lens = s.size();
int lent = t.size();
if(lens != lent)
return false;
if(s == t)
return true;
int flag = 1;
for(int i = 0; i < lens; i++)
if(s[i] != t[i]){
flag = 0;
break;
}
if(flag)
return false;
sort(s.begin(), s.end());
sort(t.begin(), t.end());
for(int i = 0; i < lens; i++)
if(s[i] != t[i])
return false;
return true;
}
};