LeetCode 75 part 05 哈希表/哈希集合

1657.确定两个字符串是否接近

分析:满足三个条件
  • 1.两个字符串长度相等
  • 2.两个字符串的字符种数相同
  • 3.两个字符串的字符频次相同
思路一:
  • 使用unordered_set 判断字符种数是否相同
  • 使用sort排序判断频次是否相同
class Solution {
public:
    bool closeStrings(string word1, string word2) {
        int n1=word1.size(),n2=word2.size();
        if(n1!=n2) return false;//字符串长度是否相同
        unordered_set<char>cset;
        vector<int> char1(26),char2(26);
        for(int i=0;i<n1;i++){
            if(cset.find(word1[i])==cset.end()) cset.insert(word1[i]);
            char1[word1[i]-'a']++;
            char2[word2[i]-'a']++;
        }
        cout<<123;
        for(auto it:word2){//字符种数和结果字符种数是否相同
            if(cset.find(it)==cset.end()) return false;
        }
        sort(char1.begin(),char1.end());//直接排序比较频次
        sort(char2.begin(),char2.end());
        return char1==char2;
    }
};

猜你喜欢

转载自blog.csdn.net/Ricardo_XIAOHAO/article/details/133428663