在工作過程中,需要用到兩個字串匹配度演算法,網上參考一些資料,寫了乙個匹配度演算法類,專案中用到了而且效果很不錯,今天給大家分享。
可以直接複製到你的專案中,就乙個呼叫函式,非常簡單。
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然後再考慮進製,需...