242. 有效的字母异位词
给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。
注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。
示例 1:
输入: s = “anagram”, t = “nagaram”
输出: true
示例 2:
输入: s = “rat”, t = “car”
输出: false
来源:力扣(LeetCode)
链接:https:///problems/valid-anagram
class Solution {
public:
bool isAnagram(string s, string t) {
int record[26]={0};
for(int i=0;i<s.size();i++){
record[s[i]-'a']++;
}
for(int j=0;j<t.size();j++){
record[t[j]-'a']--;
}
for(int i=0;i<26;i++){
if(record[i]!=0){
return false;
}
}
return true;
}
};
这段代码是用于判断两个字符串是否是字母异位词(anagram)的解决方案。字母异位词指的是由相同的字母重新排列而成的单词或短语。
以下是对代码的详细解析:
-
创建一个大小为26的整型数组
record
,并将所有元素初始化为0。数组record
用于记录字符串中每个字母的出现次数。由于假设字符串只包含小写字母,所以数组大小为26(即英文字母表的字母个数)。 -
第一个
for
循环遍历字符串s
,对于每个字符s[i]
,通过s[i]-'a'
计算其在字母表中的索引,并将对应的record
元素值加1。这样,record[i]
表示字母表中第i个字母在字符串s
中出现的次数。 -
第二个
for
循环遍历字符串t
,对于每个字符t[j]
,同样通过t[j]-'a'
计算其在字母表中的索引,并将对应的record
元素值减1。这样,record[i]
表示字母表中第i个字母在字符串t
中出现的次数。 -
第三个
for
循环遍历整个record
数组,检查是否存在非零元素。如果存在非零元素,说明字符串s
和t
中的字母出现次数不一致,即它们不是字母异位词,因此返回false
。如果所有元素都为零,说明字符串s
和t
是字母异位词,返回true
。
总结:该代码通过统计两个字符串中各字母出现的次数,并通过对比字母表中每个字母的计数是否一致来判断两个字符串是否为字母异位词。