问题来源于
http://weibo.com/1748374882/yavpCkc31
问题:有两个字符串 A 和 B,如何简单高效的判断 A 和 B 的相似度?A 和 B 完全一样,相似度为 100, A 和 B 完全不一样,相似度为 0. A 和 B 中有一半文字相同,相似度为 50. 依此类推。文字中包含中英文,空白字符也算。哪位用 JS 挑战下?性能第一,代码长短无所谓。
function compare(x, y) {
var z = 0;
var s = x.length + y.length;;
x.sort();
y.sort();
var a = x.shift();
var b = y.shift();
while(a !== undefined && b !== undefined) {
if (a === b) {
z++;
a = x.shift();
b = y.shift();
} else if (a < b) {
a = x.shift();
} else if (a > b) {
b = y.shift();
}
}
return z/s * 200;
}
console.log(compare(['123', '中文', 'hello'], ['123', '中文', 'hello']))
console.log(compare(['123', '中文', 'hello'], ['123', '中文', 'hello'].sort()))
console.log(compare(['123', '中文', 'hello'], ['123', '中文', 'hello'].reverse()))
console.log(compare(['123', '中文', 'hello','中2文'], ['12', '中2文', '123','中文3']))
console.log(compare(['123', '中文', 'hello'], ['中文', 'world', '456']))
console.log(compare(['123', '中3文', 'hello'], ['中文', 'world', '汉字']))
分享到:
相关推荐
1. **Levenshtein距离**:衡量两个字符串之间转换成彼此所需的最少单字符编辑(插入、删除或替换)的数量。距离越小,相似度越高。 2. **Jaccard相似度**:基于集合论,计算两个字符串的公共子串占总子串集合的比例...
Levenshtein距离算法是一种衡量两个字符串相似度的数学方法,由俄国科学家Vladimir Levenshtein在1965年提出。这个算法通过计算将一个字符串转换成另一个字符串所需的最少单字符编辑(插入、删除或替换)次数来评估...
该软件包包含一些函数,用于获取两个字符串或两个对象之间的相似度(相似度,相似度)。 所使用的算法实际上非常简单:它不区分大小写levenshtein距离,并且也忽略非字母数字字符(例如空格,破折号,点等)。 ...
根据找到两个字符串之间的相似度,该相似度通常比要好。 目录 用法 对于Node.js 安装使用: npm install string-similarity --save 在您的代码中: var stringSimilarity = require ( "string-similarity" ) ;...
比较两个字符串的相似度 例子: var str1 = 'Continuous Integration Your Hexo Blog With Travis CI' ; var str2 = 'Continuous Integration Your Hexo Blog With Travis' ; var similar = require ( './index.js...
在本文中,我们探讨了如何使用JavaScript(js)编写一个函数来找出两个字符串中的最大公共子串。这涉及到字符串处理的知识,以及算法的实现,特别是动态规划和双指针技术。 首先,需要明确的是字符串的最大公共子串...
在编程中,我们可以直接使用`==`运算符(或在某些语言中,如Python,使用`==`或`is`)来判断两个字符串是否相等。 2. **忽略大小写比较**:在某些情况下,我们可能不在乎字符串中的字符是否大写或小写。可以使用...
在JavaScript环境下,TLSH库允许开发者在前端或者Node.js环境中计算两个字符串的相似度,从而应用于诸如数据校验、文本比较、重复内容检测等多种场景。 TLSH的工作原理基于局部敏感哈希(Locality Sensitive ...
接下来,函数通过`indexOf('*')`方法查找星号在两个字符串中的位置。如果两个字符串都包含*,那么我们需要进一步处理。 如果两个字符串都含有*,代码会比较它们的*所在位置,并选择位置较早的那个作为起始点。接着...
3. `FitnessFunction`:用于计算个体的适应度,这可能涉及字符串相似度的计算,如Levenshtein距离或余弦相似度。 4. `Selection` 方法:根据适应度进行选择,可能使用轮盘赌选择、锦标赛选择等策略。 5. `Crossover`...
在JavaScript编程中,有时我们需要找出两个字符串之间的最长公共子串,这是字符串处理中一个常见的问题。最长公共子串是指在两个或多个字符串中都存在的最长的连续字符序列。本篇文章将详细讲解如何通过自定义函数来...
在软件开发和算法领域中,编辑距离(Edit Distance)是一个衡量两个字符串相似度的重要概念。它指的是通过插入、删除或者替换操作将一个字符串转换为另一个字符串所需要的最小操作次数。本题目是在传统编辑距离的...
比较两个base64编码的字符串并返回比较结果 这是在ASP中实现的简单api。 网络API 2。 它包含三个端点: PUT baseurl / v1 / diff / 1 /向左 PUT / v1 / diff / 1 /向左GET / v1 / diff / 1 前两个PUT端点正在...
命令行输入两个txt文件的绝对路径,计算相似度,写进txt文件
编辑距离(Edit Distance),又称Levenshtein距离,是一种衡量两个字符串相似度的方法。它定义为通过插入、删除或替换一个字符的方式将一个字符串转换成另一个字符串所需的最少操作次数。 #### 二、编辑距离的应用...
编辑距离(Edit Distance)是一种衡量两个字符串相似度的算法,常用于文本处理、拼写纠错、生物信息学等领域。在动态规划(Dynamic Programming)的基础上,我们可以有效地计算出两个字符串之间的编辑距离。本项目...
它将图像转化为一个简化的指纹字符串,通过比较指纹的差异来判断图像的相似性。基本步骤包括减小图像尺寸、简化色彩、计算平均值、比较像素灰度值、生成哈希值,最后通过计算汉明距离来评估图像的相似度。这种方法...
`jaro-winkler`是一个专门用于计算两个字符串之间相似性的算法,它在前端开源库中扮演着重要角色。这个库提供了一个高效的方法来衡量两个字符串的相似程度,对于处理模糊匹配和近似匹配的问题尤其有用。 **Jaro-...
在这个前端项目中,“l-digity”是一个JavaScript库,它提供了一个简单易用的API,使得开发者可以方便地在前端代码中计算两个字符串的Levenshtein距离。例如,你可以使用它来判断用户输入的单词是否与预设的关键词...