Leetcode辞書ツリー-720:辞書で最長の単語

いくつかの基本的な知識を記録するために、ここで、水の問題で行うが、最初のトピックleetcodeは、行うが、ルーキーは、あまりにも多くの食べ物、まだ始まったばかり。ギャングスターによって、パスを参照してください。

https://leetcode-cn.com/problems/longest-word-in-dictionary/

ここに私の分析とコードは次のとおりです。

1  クラスのソリューション{
 2  公共3  
4      クラスツリー{
 5      公共://ここで明確にする必要性を呼び出した後、それ以外の場合は、民間のツリーとして認識され、呼び出すことはできません
 6          BOOLの = has_words ;
 7          ベクトル<ツリー*> V ;
 8。 
9。          ツリー():has_words(偽の)、V(26で){};
 10          // 初期化パラメータの伝送は、実際、V 26であるベクター上のアレイを生成する
。11          静的 ボイド wordsinsert(ツリーT * ストリングAIM){
 12である             ためチャー{AIM):C
 13であります                 もし(!T-> V [C- ' A ' ])T-> V [C- ' A ' ] = 新しいツリー。
14                  T = T-> V [C- ' A ' ]。
15              }
 16              T-> has_words = 17          }
 18  
19          静的 ブール searchwords(ツリー* T、文字列目的){
 20              チャーC:AIM){
 21                  、T = T-> V [C- ' A ' ]。
22                  もし(!T-> has_words)リターン falseに23である             }
 24              リターン trueに;
 25          }
 26である     };
 27  
28       longestWord(ベクトル< ストリング >・ワード){
 29          ツリー* =ルート新しい新しいツリー;
 30          用の文字列AIM:ワード)トラバース馴染み{//注意方法
 31である             ツリー:: wordsinsert(根、AIM); //ツリーの二つの機能をので、ここでは、静的型の後に宣言されているので、対応するタイプのインスタンスが存在しない場合に型名を意味ダイレクトコール機能
 32          について} //詳細静的機能解決(!慎重に検討してください)
 33          文字列の最長="" ;
34          のために文字列目的:ワード){
 35              であれば(ツリー:: searchwords(根、AIM)){
 36                  であれば(aim.size()> longest.size())最長=を目指します。
37                  他の 場合(aim.size()== longest.size()&&最長<AIM)最長= 目指します。
38              } //字典序直接比较即可
 39          }
 40          リターン最長。
41      }
 42 }。

OK

おすすめ

転載: www.cnblogs.com/savennist/p/12377831.html