Given two strings s and t, write a function to determine if t is an anagram of s.
For example,
s = "anagram", t = "nagaram", return true.
s = "rat", t = "car", return false.
Note:
You may assume the string contains only lowercase alphabets.
思路一:
排序进行比较
class Solution {
public:
bool isAnagram(string s, string t) {
sort(s.begin() , s.end());
sort(t.begin() , t.end());
if(s == t)
return true;
else
return false;
}
};
思路二:
排序进行计数
class Solution{
public:
bool isAnagram(string s, string t){
vector<int> count(26, 0); % int类型的动态数组, 26个字符, 初始化为0
for( int i = 0; i < s.size(); i++)
count[s[i] - 'a']++;
for( int i = 0; i < t.size(); i++)
count[t[i] - 'a']--;
for( int i = 0; i < 26; i++)
if(count[i] != 0)
return false;
return true;
}
}
Java 代码
思路:转换成字符数组进行排序,然后转换成string比较是否相等
public class Solution{
public bool isAnagram(string s, string t){
char [] sArray = s.toCharArray();
char [] tArray = t.toCharArray();
Arrays.sort(sArray);
Arrays.sort(tArray);
return String.valueOf(sArray).equals(String.valueOf(tArray));
}
}