私はvideoを使用して接頭辞トライを理解していますが(最終的に接尾辞トライに到達しようとしていますが)、サンプルコードへのリンクが壊れていますC++で接頭辞トライを作成する接尾辞Trie
int main(){
node* head=NULL;
string s="abbaa";
init();
insert(s);
if(search("ab")==true) cout<<"Found"<<endl;
else cout<<"Not found"<<endl;
}
そして、私は次の出力を取得しています:
が見つかりませんが、ビデオからこれで、次のように二つの機能、すなわち次に
void insert(string word)
{
node* current=head;
current->prefix_count++;
for(unsigned int i=0;i<word.length();++i)
{
int letter=(int)word[i]-(int)'a';
if (current->child[letter]==NULL)
current->child[letter]=new node();
current->child[letter]->prefix_count++;
current=current->child[letter];
}
current->is_end=true;
}
bool search(string word)
{
node *current=head;
for(int i=0;i<word.length();++i)
{
if(current->child[((int)word[i]-(int)'a')]==NULL)
return false;
current=current->child[((int)word[i]-(int)'a')];
}
return current->is_end;
}
以下のように挿入して、検索メインを実装があります
文字列sにabがあるので、これは混乱します。
そして最後に、私はこの行を理解しようとしています:
int letter=(int)word[i]-(int)'a';
これは我々が「A」のASCIIコードを取得して、現在の文字のASCIIコードから減算されている意味ですか?
ありがとうございます