java中的PHP similar_text() [英] PHP similar_text() in java
本文介绍了java中的PHP similar_text()的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
您是否知道PHP的任何严格等效的实现 similar_text 在Java中使用a>函数?
Do you know any strictly equivalent implementation of the PHP similar_text function in Java?
推荐答案
这与php的用法相同,如php_similar_str,php_similar_char,PHP_FUNCTION(similar_text)在php源文件中的php源文件
this works the same as php similar_text function as is in php_similar_str, php_similar_char, PHP_FUNCTION(similar_text) in string.c file of php sources
private float similarText(String first, String second) {
first = first.toLowerCase();
second = second.toLowerCase();
return (float)(this.similar(first, second)*200)/(first.length()+second.length());
}
private int similar(String first, String second) {
int p, q, l, sum;
int pos1=0;
int pos2=0;
int max=0;
char[] arr1 = first.toCharArray();
char[] arr2 = second.toCharArray();
int firstLength = arr1.length;
int secondLength = arr2.length;
for (p = 0; p < firstLength; p++) {
for (q = 0; q < secondLength; q++) {
for (l = 0; (p + l < firstLength) && (q + l < secondLength) && (arr1[p+l] == arr2[q+l]); l++);
if (l > max) {
max = l;
pos1 = p;
pos2 = q;
}
}
}
sum = max;
if (sum > 0) {
if (pos1 > 0 && pos2 > 0) {
sum += this.similar(first.substring(0, pos1>firstLength ? firstLength : pos1), second.substring(0, pos2>secondLength ? secondLength : pos2));
}
if ((pos1 + max < firstLength) && (pos2 + max < secondLength)) {
sum += this.similar(first.substring(pos1 + max, firstLength), second.substring(pos2 + max, secondLength));
}
}
return sum;
}
这篇关于java中的PHP similar_text()的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文