この記事では、Java Stringの類似性アルゴリズムについて説明します。参照のためにそれを共有してください。特定の実装方法は次のとおりです。
次のようにコードをコピーします:パブリッククラスlevenshtein {
private int Compare(string str、string target){
int d [] [];
int n = str.length();
int m = target.length();
int i;
int j; //トラバーサルターゲット
CHA1; // str
CH2; //ターゲット
int temp; //特定のマトリックス位置で値の増分を記録します
if(n == 0){
mを返します。
}
if(m == 0){
n;
}
d = new int [n + 1] [m + 1];
for(i = 0; i <= n; i ++){//最初の列を初期化
d [i] [0] = i;
}
(j = 0; j <= m; j ++){//最初の行を初期化する
d [0] [j] = j;
}
for(i = 1; i <= n; i ++){// traverse str
ch1 = str.charat(i -1);
//ターゲットを一致させます
for(j = 1; j <= m; j ++){
ch2 =ターゲット。charat(j -1);
if(ch1 == ch2){
temp = 0;
} それ以外 {
temp = 1;
}
//左側の+1、上部に+1、左上隅の温度が最小限
d [i] [j] = min(d [i -1] [j] + 1、d [i] [j -1] + 1、d [i -1] [j -1] + temp);
}
}
d [n] [m]を返します。
}
Private int min(int one、int 2、int 3){
return(1 = 1 <2?1:2)<3:
}
/**
* 2つの文字列の類似性を取得します
*
* @param str
* @paramターゲット
*
* @戻る
*/
public float getSimilarityRatio(string str、string target){
return 1-(float)比較(str、ターゲット) / math.max(str.length()、target.length());
}
public static void main(string [] args){
levenshtein lt = new levenshtein();
文字列str = "ab";
文字列ターゲット= "ac";
System.out.println( "signisityRatio =" + lt.getSimilarityRatio(str、ターゲット));
}
}
この記事がみんなのJavaプログラミングに役立つことを願っています。