兩個字串匹配度演算法

2021-10-12 04:54:27 字數 1862 閱讀 6340

在工作過程中,需要用到兩個字串匹配度演算法,網上參考一些資料,寫了乙個匹配度演算法類,專案中用到了而且效果很不錯,今天給大家分享。

可以直接複製到你的專案中,就乙個呼叫函式,非常簡單。

public class levenshteindistance

}#endregion

#region 建構函式

public levenshteindistance(string str1, string str2)

public levenshteindistance()

#endregion

#region 演算法實現

///

/// 初始化演算法基本資訊

///

/// 字串1

/// 字串2

private void levenshteindistanceinit(string str1, string str2)

///

/// 計算相似度

///

public void compute()

else

//關鍵步驟,計算當前位置值為左邊+1、上面+1、左上角+intcost中的最小值 

//迴圈遍歷到最後_matrix[_row - 1, _column - 1]即為兩個字串的距離

_matrix[i, j] = this.minimum(_matrix[i - 1, j] + 1, _matrix[i, j - 1] + 1, _matrix[i - 1, j - 1] + intcost);

_computetimes++;}}

//結束時間

_endtime = datetime.now;

//相似率 移動次數小於最長的字串長度的20%算同一題

int intlength = _row > _column ? _row : _column;

//string str = (1 - (double)_matrix[_row - 1, _column - 1] / intlength).tostring();

_result.rate = (1 - (double)_matrix[_row - 1, _column - 1] / intlength).tostring();

if (_result.rate.length > 6)

_result.usetime = (_endtime - _begintime).tostring();

_result.computetimes = _computetimes.tostring() + " 距離為:" + _matrix[_row - 1, _column - 1].tostring();

}///

/// 計算相似度

///

/// 字串1

/// 字串2

public void compute(string str1, string str2)

///

/// 初始化矩陣的第一行和第一列

///

private void initmatrix()

for (int i = 0; i < _row; i++)

}///

/// 取三個數中的最小值

///

///

///

///

///

private int minimum(int first, int second, int third)

if (third < intmin)

return intmin;

}#endregion

}///

/// 計算結果

///

public struct result

連線兩個字串

include include void main char lianjie char a 30 char b 30 原型 extern char strcat char dest,char src 用法 include 功能 把src所指字串新增到dest結尾處 覆蓋dest結尾處的 0 並新增 ...

交換兩個字串

交換兩個字串,原來的字串分別為 學生 和 好 字串輸出顯示為 學生好 交換後輸出顯示為 好學生 include using namespace std int main char c1 5 學生 char c2 3 好 char m,n,t m c1 n c2 cout 交換前 m n n t co...

兩個字串相乘

先附上一張演算法圖 解釋 123 456 首先拿出1和456相乘,儲存到陣列1 2 3 的位置,然後拿出2和456相乘2 3 4的位置,依次類推,直到第乙個字串遍歷完 然後將他們相加,依次存到陣列中 實現如下 int j 0 int resindex 0 for int i 0 i然後再考慮進製,需...