[アルゴリズム]兄弟単語の判断

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