CoffeeScript攻略3.9:匹配字串
問題
你想要匹配兩個或多個字串。
方案
計算把一個字串轉換成另一個字串所需的編輯距離或運算元目。
Levenshtein =
(str1, str2) ->
l1 = str1.length
l2 = str2.length
Math.max l1, l2 if Math.min l1, l2 == 0
i = 0; j = 0; distance = []
for i in [0...l1 + 1]
distance[i] = []
distance[i][0] = i
distance[0][j] = j for j in [0...l2 + 1]
for i in [1...l1 + 1]
for j in [1...l2 + 1]
distance[i][j] = Math.min distance[i - 1][j] + 1,
distance[i][j - 1] + 1,
distance[i - 1][j - 1] +
if (str1.charAt i - 1) == (str2.charAt j - 1) then 0 else 1
distance[l1][l2]
討論
可以使用赫斯伯格(Hirschberg)或瓦格納菲捨爾(Wagner–Fischer)的演算法來計算來文史特(Levenshtein)距離。這個例子用的是瓦格納菲捨爾演算法。
相關文章
- CoffeeScript攻略3.7:拆分字串字串
- CoffeeScript攻略3.8:字串插值字串
- CoffeeScript攻略3.1:重複字串字串
- CoffeeScript攻略3.4:查詢子字串字串
- CoffeeScript攻略4.1:從陣列生成字串陣列字串
- CoffeeScript攻略3.2:把字串轉換為小寫形式字串
- CoffeeScript攻略3.3:把字串轉換為大寫形式字串
- CoffeeScript攻略3.5:清理字串前後的空白符字串
- CoffeeScript攻略1.1:嵌入JavaScriptJavaScript
- CoffeeScript攻略1.3:for迴圈
- CoffeeScript攻略4.9:篩選陣列陣列
- CoffeeScript攻略4.8:歸納陣列陣列
- CoffeeScript攻略1.2:比較範圍
- CoffeeScript攻略4.7:對映陣列陣列
- CoffeeScript攻略2.4:建立類變數變數
- CoffeeScript攻略2.5:鏈式呼叫物件物件
- CoffeeScript攻略4.10:反轉陣列陣列
- CoffeeScript攻略3.10:生成唯一ID
- CoffeeScript攻略2.1:克隆物件(深複製)物件
- CoffeeScript攻略4.6:打亂陣列元素陣列
- 字串匹配字串匹配
- CoffeeScript攻略4.3:取得陣列最大值陣列
- CoffeeScript攻略4.4:使用陣列交換變數陣列變數
- CoffeeScript攻略4.5:定義陣列範圍陣列
- CoffeeScript攻略2.3:CoffeeScrip的type函式函式
- 【字串匹配】KMP字串匹配KMP
- CoffeeScript攻略3.6:大寫單詞首字母
- CoffeeScript攻略4.2:類似Python的zip函式Python函式
- 字串匹配問題字串匹配
- py匹配字串中間的字串字串
- 字串匹配模式問題字串匹配模式
- SQL Server字串左匹配SQLServer字串
- Bitset 亂搞字串匹配字串匹配
- CoffeeScript攻略2.2:建立一個不存在的物件字面值物件
- 3.9
- KMP字串模式匹配詳解KMP字串模式
- 【學習筆記】字串匹配筆記字串匹配
- 字串——正規表示式匹配字串