アルゴリズムの問題---最長の共通のプレフィックス

トピック出典ます。https://leetcode-cn.com/problems/longest-common-prefix/

最長共通接頭文字列の配列を見つけるために関数を記述します。

共通の接頭辞がない場合は、空の文字列を返します「」

例1:

入力:[ "花"、 "流れ "、 "飛行"]
出力: "FL"
例2:

入力:[「犬」、「レースカー 」、「車」]
出力:「」
説明:入力共通のプレフィックスがありません。
説明:

すべての入力は、z小文字のみが含まれています。

回答:

パッケージcom.zx.leetcode.longestcommonprefix。

/ ** 
 * @Author JAY 
 * @Date 2019年6月29日午後01時30 
 * @description最长公共前缀
 * * / 
パブリック クラスSolutionV2 { 

    公共 静的 ボイドメイン(文字列[]引数){
 //         文字列[] STR = { "犬"、 "dracecar"、 "DCAR"}。
//         文字列[] STR = { "花"、 "フロー"、 "フライト"}。
        文字列[] STR = { "フロー"、 "flow2"、 "FLOW3"、 "フライト" }。
//         文字列[] STR = { "1flow"、 "2flow"、 "フロー"}。
        System.out.println(longestCommonPrefix(STR))。

     ストリングlongestCommonPrefix(文字列[] STRS){
         場合(strs.length == 0 ){
             リターン "" 
        } 
        文字列S =のSTRS [0 ]。
        以下のためにint型 I = 1; I <strs.length; iは++ ){
             一方(STRS [I] .indexOf(S)!= 0 ){ 
                S = s.substring(0、s.length() - 1 )。
                もし(s.isEmpty()){
                     リターン "" 
                } 
            } 
        } 
        戻りS。
    } 

}

2回答:

パッケージcom.zx.leetcode.longestcommonprefix。

/ ** 
 * @Author JAY 
 * @Date 2019年6月29日午後01時30 
 * @description最长公共前缀
 * * / 
パブリック クラスソリューション{ 

    公共 静的 ボイドメイン(文字列[]引数){
 //         文字列[] STR = { "犬"、 "dracecar"、 "DCAR"}。
//         文字列[] STR = { "花"、 "フロー"、 "フライト"}。
//         文字列[] STR = { "フロー"、 "フロー"、 "フロー"}。
        文字列[] STR = { "1flow"、 "2flow"、 "フロー" }。
        System.out.println(longestCommonPrefix(STR))。

     

        もし(STRS == NULL || strs.length == 0 ){
             リターン "" 
        } 

        ブール =始める
        StringBuilderのSB = 新しいStringBuilderの();
        int型私= 0 ;
        int型の長さ= strs.length。
        文字列の最初 = STRS [0 ]。

        しながら(開始){
             試みる{ 
                文字列の部分文字列 = first.substring(I、I + 1 )。
                int型のインデックス= 1、インデックス<長、インデックス++){
                     IF(!Substring.equals(STRの[インデックス] .substring(Iは、I + 1。 ))){ 
                        始める = falseにBREAK ; 
                    } 
                } 
                IF (開始){ 
                    SB = sb.append(サブストリング); 
                } 
                IF ( first.equals(sb.toString())){
                     // 記述は、すべてのサイクルを起動するために一致した 
                    インクルードは=始めるfalseにし; 
                } 
                私は ++ ; 
            } キャッチ(例外E){
                開始 = ; 
            } 
        } 
        戻り sb.length()== 0?"" :sb.toString(); 
    } 

}

 

おすすめ

転載: www.cnblogs.com/ningJJ/p/11106509.html