基本的に、単語に一致するすべてのアナグラムを見つける必要があります。私が行っていたのは、サイズ 26 の配列を使用して単語の文字を表すことでした。元:
abcdefg={1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}
aaaaaaa={7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}
これが私が配列を作成している方法です。
//stringtemp is a C++ string representing the word.
//letters is a size 26 int array representing all the letters in the string.
for(int i=0;i<stringtemp.length();i++)
{
letters[stringtemp[i]-65]+=1;
}
そして、これが配列をマップに格納する方法です。
dictionary[letters].push_back(stringtemp);
それで、私は何か間違ったことをしていますか、それとも C++ では不可能ですか。私が見つけた他のすべての回答では、ベクトルをキーとして使用することを提案しましたが、それは私の場合はうまくいきません(私は思う.)