给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。
注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。
示例1:
输入: s = "anagram", t = "nagaram"
输出: true
示例2:
输入: s = "rat", t = "car"
输出: false
整体思路:
建一个26位的数组,将字母按顺序表示为这26位,s与t字符串同时遍历,在s字符串中出现字母的时候,代表该字母的位置加1,在t字符串中出现的字母,代表该字母的位置减1,最后如果这个数组的所有数都为0,说明s中的所有字母都能被t中的抵消,即满足条件,否则返回false。
代码题解:
class Solution {
public :
bool isAnagram(string s, string t) {
if(s.size()!=t.size())
return false;
int n=s.size();
int temp[26]={0};//新建26位的数组,0至25分别代表26个英文字母;
for(int i=0;i<n;i++)
{
temp[s[i]-'a']++;//s字符串中出现的字母在该位置加1,s[i]-'a'结果为一个整数
temp[t[i]-'a']--;
}
for(int i=0;i<26;i++)
if(temp[i]!=0)
return false;
return true;
}
};
代码未经优化,仅供参考!