题目描述
给定两个字符串 s
和 t
,编写一个函数来判断 t
是否是 s
的字母异位词。
注意:若 s
和 t
中每个字符出现的次数都相同,则称 s
和 t
互为字母异位词。
例子
# 例1
输入: s = "anagram", t = "nagaram"
输出: true
# 例2
输入: s = "rat", t = "car"
输出: false
说明: 你可以假设字符串只包含小写字母。
解题思路
首先定义一个包含 26个 元素的数组,元素值为全0
遍历字符串 s
,然后每一个元素,给数组对应位置值 加1
遍历字符串 t
,然后每一个元素,给数组对应位置值 减1
对应下标,就是字母的 ASCII
码值 减掉 ‘a’ 的 ASCII
值
最后遍历数组,如果数组元素值全为0,则返回 True
,否则返回 False
代码
(Python)
class Solution:
def isAnagram(self, s: str, t: str) -> bool:
result = [0]*26
for i in range(len(s)):
result[ord(s[i]) - ord('a')] += 1
for i in range(len(t)):
result[ord(t[i]) - ord('a')] -= 1
for i in range(26):
if result[i] != 0:
return False
return True
(C++)
class Solution {
public:
bool isAnagram(string s, string t) {
int result[26] = {0};
for (int i=0; i<s.size(); i++) {
result[s[i] - 'a']++;
}
for (int i=0; i<t.size(); i++) {
result[t[i] - 'a']--;
}
for (int i=0; i<26; i++) {
if (result[i] != 0) {
return false;
}
}
return true;
}
};