二つの文字列が与えられ 、S と Tを、彼らは離れて1つの編集距離の両方であるかどうかを判断します。
注意:
離れて1つの編集距離をsatisifyする3つのpossiblitiesがあります。
- 文字挿入 秒を 取得するために トン
- 以下からの文字の削除 のを 取得するために トン
- 文字に置き換え 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))。 } }