[アルゴリズム]兄弟単語の判断
3409 ワード
一つの単語のアルファベットを交換すると、army->maryのような別の単語が得られ、兄弟の単語になります.辞書で兄弟を見つける単語を提供します.データ構造とクエリー・プロシージャについて説明します.
#include <iostream>
#include <string>
#include <cstring>
using namespace std;
void add(unsigned int count[],char c){
if(c <= 'Z'){
++count[c - 'A'];
}
else{
++count[c - 'a'];
}
}
bool isBrother(const string& wa,const string& wb){
if(wa.length() != wb.length()){
return false;
}
unsigned int counta[26],countb[26];
memset(counta,0,26*4);
memset(countb,0,26*4);
for(int i = 0; i < wa.length(); ++i){
add(counta,wa.at(i));
add(countb,wb.at(i));
}
for(int i = 0; i < 26; ++i){
if(counta[i]!=countb[i]){
return false;
}
}
return true;
}