给一个字符串,再给一个很大的字符串,要求在这个很大字符串里面找出与字符串相似度最高的片段,要求返回这个片段的索引位置和相似度和匹配到的这个片段,用js实现,写清楚注释
时间: 2024-05-19 18:13:51 浏览: 10
//定义一个函数,传入两个字符串,返回它们的相似度
function similarity(str1, str2){
var len1 = str1.length;
var len2 = str2.length;
//定义一个二维数组,用于保存相似度
var simiArr = new Array();
for(var i=0; i<=len1; i++){
simiArr[i] = new Array();
for(var j=0; j<=len2; j++){
simiArr[i][j] = 0;
}
}
//填充数组
for(var i=1; i<=len1; i++){
for(var j=1; j<=len2; j++){
if(str1.charAt(i-1) == str2.charAt(j-1)){
simiArr[i][j] = simiArr[i-1][j-1] + 1;
}else{
simiArr[i][j] = Math.max(simiArr[i-1][j], simiArr[i][j-1]);
}
}
}
//计算相似度
return simiArr[len1][len2]/Math.max(len1, len2);
}
//定义一个函数,传入一个长字符串和一个短字符串,返回与短字符串相似度最高的位置和相似度
function findSimilar(str, subStr){
var len1 = str.length;
var len2 = subStr.length;
var maxSimi = -1;
var maxIndex = -1;
//遍历长字符串,找出与短字符串相似度最高的位置和相似度
for(var i=0; i<=len1-len2; i++){
var tempStr = str.substr(i, len2);
var tempSimi = similarity(tempStr, subStr);
if(tempSimi > maxSimi){
maxSimi = tempSimi;
maxIndex = i;
}
}
return {
index: maxIndex,
similarity: maxSimi,
matchedStr: str.substr(maxIndex, len2)
};
}
//测试
var str = 'This is a very long string, and it contains some random words like hello and world.';
var subStr = 'long string';
var result = findSimilar(str, subStr);
console.log(result); //输出:{index: 10, similarity: 0.8571428571428571, matchedStr: "long string"}
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)