一度編集
文字列の編集操作には、文字の挿入、文字の削除、または文字の置換の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番目のものは最初のものより間違いなく長いので、増加と変化の間の比較だけがあります