242.有效的字母异位词
题目:242. 有效的字母异位词 - 力扣(LeetCode)
代码思路:
数据范围连续且数据较小,选用数组作为哈希的数据结构,搜索快一点。
根据题目意思,只要是将s串中的字符拿出来任意排序就是异位词了(可以重复),又因为只有‘a’-‘z’26个小写字母,定义hash[26]数组,将s串中的字母出现的次序存起来,再用t串中的去减,都为0,既满足。
代码:
class Solution {
public:bool isAnagram(string s, string t) {int hash[26] = { 0 };for(int i = 0; i <s.size(); i++)hash[s[i]-'a']++;for(int i = 0; i <t.size(); i++)hash[t[i]-'a']--;for(int i = 0; i < 26; i++){if(hash[i] != 0)return false;}return true;}
};
类似题目:383. 赎金信 - 力扣(LeetCode)
class Solution {
public:bool canConstruct(string ransomNote, string magazine) {int hash[26] = {0};//addif (ransomNote.size() > magazine.size()) {return false;}for (int i = 0; i < magazine.size(); i++) {// 通过record数据记录 magazine里各个字符出现次数hash[magazine[i]-'a'] ++;}for (int j = 0; j < ransomNote.size(); j++) {// 遍历ransomNote,在record里对应的字符个数做--操作hash[ransomNote[j]-'a']--;// 如果小于零说明ransomNote里出现的字符,magazine没有if(hash[ransomNote[j]-'a'] < 0) {return false;}}return true;}
};