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;
}
};