[LC] 161つの編集距離

二つの文字列が与えられ  、S  と  Tを、彼らは離れて1つの編集距離の両方であるかどうかを判断します。

注意: 

離れて1つの編集距離をsatisifyする3つのpossiblitiesがあります。

  1. 文字挿入  秒を  取得するために  トン
  2. 以下からの文字の削除  のを  取得するために  トン
  3. 文字に置き換え  Sを  取得するために  トン

例1:

入力:S = "AB"、T = "ACB"
出力:真
説明:私たちは、に「C」を挿入することができますsの  取得するために  トンを。

例2:

入力:S = "タクシー"、T = "広告"
出力:偽
説明:私たちは得ることができないトンをから一工程のみで。

例3:

入力:S = "1203"、T = "1213"
出力:真
説明:我々は、取得するために「1」と「0」を置き換えることができます  トンを。


クラスソリューション{
     パブリック ブールisOneEditDistance(文字列の文字列T){
         場合(Math.abs(s.length() - t.length())> 1 ){
             戻り 
        }
        もし(s.length()== t.length()){
             リターンisOneModify(S、T)。
        } そう であれば(s.length()> t.length()){
             リターンisOneDel(S、T)。
        } {
             リターンisOneDel(T、S)。
        }
    }
    
    プライベート ブールisOneModify(文字列の文字列T){
         int型のdiff = 0、I = 0 一方、(I < s.length()){
             場合(s.charAt(I)!= t.charAt(I)){
                差分 + = 1 ;
            }
            I + = 1 ;
        }
        リターン差分== 1 ;
    }
    
    プライベート ブールisOneDel(文字列の文字列T){
         int値 iが0 = (; I <s.length()&& I <t.length(); I ++ ){
             場合(s.charAt(I)=!t.charAt(I)){
                 ブレーク
            }
        }
        リターン s.substring(I + 1 ).equals(t.substring(I))。
    }
}

おすすめ

転載: www.cnblogs.com/xuanlu/p/12144340.html