美好的一天。
我需要检查一个字符串是否被更改了一个或多个字符。例如:
var string = "Orange"; //default
var string2 = "Orange"; // Equals
var string3 = "Oronge"; // orOnge just 1
var string4 = "Orongo"; // orOngO 2 or more.
verificar(string, string2); // return 2
verificar(string, string3); // return 0
verificar(string, string4); // return 1
function verificar(a, b){
//Here I need the code which returns 0 if only one character is modified or 1 if it has been modified two or more characters, or 2 in case you have not changed anything.
}
有什么建议吗?
问候!
答案 0 :(得分:1)
您正在寻找的是Levenshtein Distance。
在信息理论和计算机科学中,Levenshtein距离是用于测量两个序列之间差异的字符串度量。非正式地说,两个单词之间的Levenshtein距离是将一个单词改为另一个单词所需的最小单字符编辑数(即插入,删除或替换)。
使用Google搜索很容易找到许多实现,例如this one。
答案 1 :(得分:0)
如果a和b的长度相同,这应该可以完成工作。循环执行a,检查每个字符是否已更改,如果是,则添加到count。
function verificar(a, b){
count = 0
for (var i = 0; i < a.length; i ++) {
if (a[i] != b[i]) {
count++
}
}
if (count == 0) {
return "Equal"
}
else if (count == 1) {
return "1 change"
}
else {
return "More than 1 change"
}
}