一度編集

一度編集

文字列の編集操作には、文字の挿入、文字の削除、または文字の置換の3つがあります。2つの文字列が与えられた場合、それらが1つ(または0)の編集のみを必要とするかどうかを判断する関数を記述します。

例1:

  • 入る: 
  • 最初=「淡い」
  • second = "ple"
  • 出力:True

例2:

  • 入る: 
  • 最初=「淡い」
  • 2番目= "pal"
  • 出力:False

サンプルコード:

class Solution(object):
    def oneEditAway(self, first, second):
        """
        :type first: str
        :type second: str
        :rtype: bool
        """
        if abs(len(first) - len(second)) > 1:
            return False
        if len(second) - len(first) < 0:
            first, second = second, first
        for i in range(len(first)):
            if first[i] == second[i]:
                continue
            return first[i:] == second[i+1:] or first[i+1:] == second[i+1:]
        return True


a = Solution()
# b = a.oneEditAway("pale", "pal")
b = a.oneEditAway("pales", "pal")
print(b)

実行結果:

アイデア分析:

キーポイント:

  •     追加、削除、変更機能の特徴は次のとおりです。異なる位置から開始して、フォローアップは同じです

エラーが発生しやすいポイント:

  •     比較するときに、最初の文字列が比較的長い場合、インデックスがオーバーフローする可能性があります。
  •     加算と削除は実際には逆の操作であるため、2つの文字列を直接交換できます
  •     変更を比較する場合、iではなくi +1であることに注意してください
  •     2番目のものは最初のものより間違いなく長いので、増加と変化の間の比較だけがあります

おすすめ

転載: blog.csdn.net/weixin_44799217/article/details/113861210