灵感来源:
给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。
注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。
力扣(LeetCode)https://leetcode-cn.com/problems/valid-anagram/
注意点:
- 哈希表相比于数组在时间和空间上都浪费了很多时间
- 字母型的转化为数字型进行数组下标代替哈希表
- 字母型
aASCⅡ = 97 + 26个字母 转换
代码如下:
class Solution {
public:
bool isAnagram(string s, string t) {
if (s.size() != t.size()) return false;
unordered_map<char, int> bucket;
for (char c : s) bucket[c]++;
for (char d : t) bucket[d]--;
for(int i = 0; i < bucket.size(); ++i){
if (bucket[i] != 0)
return false;
}
return true;
}
};
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 i=0;i<t.size();i++)
{
record[t[i]-'a']--;
}
for(int i=0;i<26;i++)
{
if(record[i]!=0)
{
return false;
}
}
return true;
}
};

本文探讨了如何使用Python高效地判断两个字符串s和t是否为字母异位词,通过对比哈希表和数组转换的方法,优化了空间和时间复杂度。介绍了两种解决方案,一种利用哈希表,另一种将字符计数转换为整数数组。
1148

被折叠的 条评论
为什么被折叠?



