LeetCode 75 parte 05 Tabla hash/colección hash

1657. Determinar si dos cuerdas están cerca

Análisis: Se cumplen tres condiciones
  • 1. Las dos cuerdas tienen la misma longitud.
  • 2. El número de caracteres en las dos cadenas es el mismo.
  • 3. La frecuencia de los caracteres en las dos cadenas es la misma.
Idea uno:
  • Utilice unordered_set para determinar si el número de caracteres es el mismo
  • Utilice ordenar para determinar si las frecuencias son las mismas
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;
    }
};

Supongo que te gusta

Origin blog.csdn.net/Ricardo_XIAOHAO/article/details/133428663
Recomendado
Clasificación