回答
您正在嘗試查找的號碼被稱爲edit distance。維基百科列出了您可能想要使用的幾種算法; Hamming distance是一種尋找相同長度的兩個字符串之間的編輯差異的常見方法(它經常用於糾錯碼)。 Levenshtein distance類似,但也會考慮插入和刪除。維基百科當然列出了其他幾個(,例如Damerau-Levenshtein distance,其包括換位);我不知道你想要什麼,因爲我不是專家,選擇是特定領域的。其中之一,應該做的伎倆。
import math
def differences(s1, s2):
count = 0
for i in range(len(s1)):
count += int(s1[i] != s2[1])
# count += math.sqrt((len(s1) - len(s2)) **2) #add this line if the two strings are of different length and differences counts the how many characters one string has more than the other.
return count
希望這有助於
爲什麼不''math.fabs'? – 2010-04-14 05:39:20
假設你只希望在同一指標來比較字符(使用LINQ提供的方法)下面的C#解決方案應該做的伎倆:
var count = s1.Zip(s2, (c1, c2) => c1 == c2 ? 0 : 1).Sum();
這個「壓縮」這兩個字符串,然後爲每個索引返回0,其中字符相同,每個索引的索引位置不同。然後,我們簡單地總結這些數字,然後我們得到結果。
請參閱我對@ Anthony的解決方案的評論。這裏也是一樣的問題:你假設從's1'到's2'的初始轉換,並且不會產生最短的編輯距離。 – wilhelmtell 2010-04-14 04:53:09
@wilhelmtell:是的,我在第一句中提到:-)。目前還不清楚問題是如何計算這樣簡單的天真計數或更復雜的事情...... – 2010-04-14 11:19:43
如果你的意思是「編輯距離」,你已經得到了很好的答案。如果你只是表示「是不同的字符數」(對於兩個相同長度的字符串),在Python中,最簡單的方法是:
sum(c1!=c2 for c1, c2 in zip(s1, s2))
,如果你也想加入的長度差,追加
+ abs(len(s1) - len(s2))
當然,如果你做想編輯距離,這種做法就太簡單化;-)。
- 1. 查找2個字符串數組列表中的差異
- 2. 查找字符串之間的差異
- 3. 查找兩個字符串之間的差異位置
- 4. Python - 查找2個數字之間的差異
- 5. 查找字符代碼在UTF-8字符串差異PHP
- 6. 字符串差異
- 7. 查找字符串中重複子字符串的數量
- 8. 的Lua - 如何找到一個串1或2個字符差異
- 9. 如何找到字符串中兩個時間值的差異?
- 10. 查找2個字符串之間的字符串值
- 11. 使用zip查找Scala中兩個字符串之間的差異
- 12. 差異化的兩個字符串C#
- 13. 如何比較2個字符串並找出百分比的差異?
- 14. 使用javascript獲取2個字符串之間的差異
- 15. 在2個字符串之間查找字符串
- 16. Python 3中字符串中字符之間差異的數量3
- 17. 字符串查找(),用於findng小差異
- 18. 查找2個數據幀的月份差異
- 19. 在PHP中找到Orignal字符串和編輯字符串之間的差異?
- 20. 字符串差異php
- 21. JavaScript字符串差異
- 22. Objective-C字符串差異
- 23. TSQL字符串差異度
- 24. 顯示2+純文本字符串中的差異
- 25. 查找字符串中的字符串
- 26. 查找字符串中的字符串
- 27. 查找字符串中的字符串
- 28. PHP中的字符串差異
- 29. 查找字符串中的數字字符串,並計數
- 30. 查找差異
對於這個問題,什麼構成「差異」?除非你回答這個問題,否則你能得到的最佳答案將是那些指向與問題的不同定義相關的可能算法範圍的那些答案,因爲任何具體的建議僅僅對於問題的單一定義是準確的。 也就是說:你的問題太含糊。 – 2010-04-14 03:45:05
查看[測量編輯距離]的方法之一(http://en.wikipedia.org/wiki/Edit_distance)。 – 2010-04-14 03:41:05