Given two strings s and t , write a function to determine if t is an anagram of s.
Example 1:
Input: s = "anagram", t = "nagaram"
Output: true
Example 2:
Input: s = "rat", t = "car"
Output: 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?
题意:给出两个字符串,判断它们是否相似(字母个数相同,但其排列顺序可以不同)。
思路:首先判断字符串的长度,若长度不同,则必不相似。利用一个数组统计s串中每个字母出现的次数,再统计t中每个字母出现的次数,进行比较即可。这里使用的是s串中进行相加,t串中相减。若出现某字母次数小于0,则必不相似。
class Solution {
public:
bool isAnagram(string s, string t) {
if(s.length()!=t.length())
return 0;
int len=s.length();
int aa[26]={0};
for(int i=0;i<len;i++)
aa[s[i]-'a']++;
for(int j=0;j<len;j++){
aa[t[j]-'a']--;
if(aa[t[j]-'a']<0)
return 0;
}
for(int k=0;k<26;k++){
if(aa[k]!=0)
return 0;
}
return 1;
}
};