1
請注意,它並不需要真正計算Levenshtein編輯距離。只是檢查它是否1。如何有效地檢查兩個字符串之間的Levenshtein編輯距離是否爲1
該方法的簽名可以是這樣的:
bool Is1EditDistance(string s1, string s2).
例如: 1. 「ABC」 和 「AB」 返回真 2. 「ABC」 和 「aebc」 返回true 3 。「abc」和「a」返回false。
我試過遞歸批准,但它效率不高。
更新:借朋友的回答:
for (int i = 0; i < s1.Length && i < s2.Length; i++)
{
if (s1[i] != s2[i])
{
return s1.Substring(i + 1) == s2.Substring(i + 1) //case of change
|| s1.Substring(i + 1) == s2.Substring(i) //case of s1 has extra
|| s1.Substring(i) == s2.Substring(i + 1); //case of s2 has extra
}
}
return Math.Abs(s1.Length - s2.Length) == 1;
哪個編輯距離?萊文斯坦?海明? – Bitwise
你可以多補充一點這個問題嗎?也許告訴我們你試過了什麼? – senderle
有多種類型的距離定義b/w弦.Jaro-Winkler距離,漢明,Levenshtein ......哪一個? –