题目:
Given two strings s and t , write a function to determine if t is an anagram of s.
思路:
设立一个字母hash表对照下即可。
代码实现:
class Solution {
public:
bool isAnagram(string s, string t) {
if (s.size() != t.size()){
return false;
}
vector<int> hash(26, 0);
for (int i = 0; i < s.size(); ++i){
++hash[s[i]-'a'];
}
for (int i = 0; i < s.size(); ++i){
if (hash[t[i]-'a'] <= 0){
return false;
}
--hash[t[i]-'a'];
}
return true;
}
};
discuss:
// 思路:对于两个字符串,hash也加也减的,看hash是否全部变为0
class Solution {
public:
bool isAnagram(string s, string t) {
if (s.length() != t.length()) return false;
int n = s.length();
int counts[26] = {0};
for (int i = 0; i < n; ++i){ // 对于两个字符串,也加也减的
++counts[s[i] - 'a'];
--counts[t[i] - 'a'];
}
for (int i = 0; i < 26; ++i) // 看hash是否全部变为0
if (counts[i])
return false;
return true;
}
};