- 242 有效的字母异位词
- 来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/valid-anagram - 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。
示例 1:
输入: s = “anagram”, t = “nagaram”
输出: true
解题思路:(1)排序:两个排序后进行比较。(2)哈希表:遍历s,dic记录26个字母出现的次数,再遍历t,对应位置减一,若dic出现小于0,则两者不是字母异位词。
Notes: 【c++】sort(s.begin(), s.end());
,vector<int> dic(26,0);++ dic[s[i]-'a'];
。【python 3 】s1 , t1= list(s), list(t) s1.sort() t1.sort()
, dic = [0]*26 for ch in s: dic[ord(ch)- ord('a')] +=1
// c++
class Solution {
public:
bool isAnagram(string s, string t) {
if (s.size()!= t.size()) return false;
// 排序
// sort(s.begin(), s.end());
// sort(t.begin(), t.end());
// if(s==t) return true;
// return false;
// 哈希表
vector<int> dic(26,0); //初始化26个0
for(int i=0; i<s.size();++i){
++ dic[s[i]-'a'];
}
for(int i=0;i<t.size();++i){
-- dic[t[i]-'a'];
if(dic[t[i]-'a']<0) return false;
}
return true;
}
};
# python 3
class Solution:
def isAnagram(self, s: str, t: str) -> bool:
if len(s)!=len(t): return False
# 排序
s1 , t1= list(s), list(t)
s1.sort()
t1.sort()
print(s1,t1)
if s1==t1: return True
return False
# # 哈希
# if len(s)!=len(t): return False
# dic = [0]*26
# for ch in s:
# dic[ord(ch)- ord('a')] +=1
# for ch in t:
# dic[ord(ch)-ord('a')] -=1
# if dic[ord(ch)-ord('a')]<0: return False
# return True