题目: Valid Anagram
原题链接:https://leetcode.com/problems/valid-anagram/
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.
Follow up:
What if the inputs contain unicode characters? How would you adapt your solution to such case?
给定2个字符串,第二个字符串是不是第一个字符串里面字符的重排列(都是小写字符)。
思考:如果给的是unicode字符,怎么办?
方法一:两个字符串都进行排序然后比较,相等则是重排列,否则不是:
class Solution {
public:
bool isAnagram(string s, string t) {
sort(s.begin(), s.end());
sort(t.begin(), t.end());
return s==t;
}
};
方法二:用hash数组来统计每个字符出现的次数,彼此相消,能够清空则是重排列 :
class Solution {
public:
bool isAnagram(string s, string t) {
int hash[26] = {0};
for(auto str : s) {
hash[str - 'a'] ++;
}
for(auto str : t) {
hash[str - 'a'] --;
}
for(int i = 0; i < 26; ++i) {
if(hash[i]) return false;
}
return true;
}
};