記事のディレクトリ:
- タイトル
- スクリプトとノート
- スクリプトは、コメント解除します
- スクリプトロジック
トピック:
最長共通接頭文字列の配列を見つけるために関数を記述します。
共通の接頭辞がない場合は、空の文字列を返します「」
例1:
入力:[ "花"、 "流れ "、 "飛行"]
出力: "FL"
例2:
入力:[「犬」、「レースカー 」、「車」]
出力:「」
説明:入力共通のプレフィックスがありません。
説明:
すべての入力は小文字のみがAZ含まれています。
そして、スクリプト注: [使用:28ms]
クラスソリューション: DEF longestCommonPrefix(セルフ、STRを:リスト[STR]) - > STR:#入出力フォーマット定義されたトピック NUM1 = LEN(STRを)#取得入力リストの要素数 ターゲットは = 「」#は、共通のプレフィックスを格納するための空の変数を定義する フラグに = #フラグ定義「」 私は = 意志インクリメントサイクルとして、0#変数が変数リスト要素のための0の値として定義される トライ:入力空のリストを処理するためのステートメントを除き、#使用トライ... カール = STRの[0]入力リストが空リストの最初の要素を取り、カール変数に割り当てられていない# 以外はIndexError:#を入力リストが空である場合には、ヌル値が返される リターン(「」) 一方TRUE:使用#無限ループ循環裁判官を入力 するために J でレンジ(NUM1):横断する要素のリストに列の#番号を使用して、リストの要素の数 を試して:#をここで使用しようとするが...小さすぎて特定の要素の文字の数を処理する場合を除き、要素インデックス値が所定の範囲を超えて IFカール[I] == のSTR [J] [I]:各要素が同じであれば、フラグが真である#i番目の文字リスト フラグに = 「trueに」 他:#同じ識別子がXX、その後で、ループを終了した場合 フラグに = 「XX 」 BREAK 除いてはIndexError:#インデックスは、要素の範囲外である場合 フラグに = 「XX #フラグXXのための」 BREAK#がループ終了 IF ==内のフラグ「真の」:ループのため#出口を、フラグビットの決意は、次の処理を決定します ターゲット + = カール[I]フラグがtrueの記録、共通の接頭文字が変数を置くことです# elifの中のフラグ== 「XX 」: BREAKをフラグ#XXである場合は、その後、ループ終了します I。それぞれについて、+ =#1ループの終わり、iをインクリメントしている。1つの リターン(ターゲット)レコードの#は、可変共通のプレフィックスを返さ
#コーディング:GBK STRS = [ " ABCA "、" ABC " ] NUM1 = LEN(STRS) ターゲット = "" フラグ = "" 私は = 0 ならSTRS [0]: カール = STRS [0] 、他: 印刷("" ) しばらく真: のための J での範囲(NUM1): 試してみる: もしカール[i]を== STRS [J] [i]は: フラグ = 「真の」 他: フラグ = ' XX ' 休憩 を除いてはIndexError: フラグ = 「XX 」 ブレーク であればフラグ== 「真」: 対象 + = カール[I] のelifフラグ== ' XX ' : 破る I + = 1枚の プリント(ターゲット)
クラスソリューション: デフ longestCommonPrefix(自己、STRS:リスト[STR]) - > STR: NUM1 = LEN(STRS) ターゲット = "" フラグ = "" 私は = 0 を試して: カール = STRS [0] を除いてはIndexError: リターン("" ) しばらく真: のための J での範囲(NUM1): 試してみる: もしカール[i]を== STRS [J] [i]は: フラグ = 「真の」 他: フラグ = ' XX ' 休憩 を除いてはIndexError: フラグ = 「XX 」 ブレーク であればフラグ== 「真」: 対象 + = カール[I] のelifフラグ== ' XX ' : 破る I + = 1 戻り(ターゲット)
スクリプトロジック:
- 共通のプレフィックスが各すべての要素のリストを持っている必要があります、あなたは、第1のコントラストターゲットのリストのすべての要素を出します
- してみてください...例外の処理裁判官にexcept文
- 私の使用がインクリメントされ、範囲は()各要素の各文字を横断します