Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 如何标记两个字符串之间的差异_String_Algorithm - Fatal编程技术网

String 如何标记两个字符串之间的差异

String 如何标记两个字符串之间的差异,string,algorithm,String,Algorithm,我想要一个可以直观地标记两个字符串之间差异的函数 例1: 输入: 堆栈溢出 堆栈溢出 输出: 堆栈[O]verflow 堆栈[o]溢出[ing] 例2: 输入: 重新打包溢出 堆栈溢出 输出: [Res]tack[]溢出 [S]tack[-]O[ooo]verflow 我已经搜索了很多次了,但是我总是使用文件比较函数。我想想象一下字符串之间的区别。我发现的一个例子是(这正是我需要的),但它似乎使用了服务器端代码 语言并不重要,JavaScript、Python,但是任何关于如何解

我想要一个可以直观地标记两个字符串之间差异的函数

例1:

输入:

  • 堆栈溢出
  • 堆栈溢出
输出:

  • 堆栈[O]verflow
  • 堆栈[o]溢出[ing]
例2:

输入:

  • 重新打包溢出
  • 堆栈溢出
输出:

  • [Res]tack[]溢出
  • [S]tack[-]O[ooo]verflow
我已经搜索了很多次了,但是我总是使用文件比较函数。我想想象一下字符串之间的区别。我发现的一个例子是(这正是我需要的),但它似乎使用了服务器端代码

语言并不重要,JavaScript、Python,但是任何关于如何解决这个问题的指针都很好


我不一定要寻找一个实现;我宁愿有一些网站的链接,因为这不是一个基本的问题。这也不太难,但你想把它弄对。

这个问题可以通过找到两个字符串的(LCS)来解决,然后将方括号放在不属于LCS的部分周围

例如,
堆栈溢出
堆栈溢出
的LCS是
堆栈溢出
,因此第一个字符串将呈现为
堆栈[O]溢出
,第二个字符串呈现为
堆栈[O]溢出
,因为这些是LCS中不存在的部分


Wikipedia上描述了计算LCS的一种方法,并且在实际情况下,各种算法都加快了计算速度。每个字符串中不在LCS中的部分可以通过一个简单的循环找到,该循环维护字符串中的当前索引和LCS中当前位置的另一个索引。

这个问题可以通过找到两个字符串的(LCS)来解决,然后,仅将不属于LCS的部分放在方括号内

例如,
堆栈溢出
堆栈溢出
的LCS是
堆栈溢出
,因此第一个字符串将呈现为
堆栈[O]溢出
,第二个字符串呈现为
堆栈[O]溢出
,因为这些是LCS中不存在的部分


Wikipedia上描述了计算LCS的一种方法,并且在实际情况下,各种算法都加快了计算速度。每个字符串中不在LCS中的部分可以通过一个简单的循环找到,该循环维护字符串中的当前索引和LCS中当前位置的另一个索引。

?编辑顺序?嗯,编辑距离和顺序很有趣,但我不确定如何使用它们来解决这个问题。解决方案需要走多远?如果将堆栈溢出与堆栈溢出进行比较,会发生什么情况?哪些位会突出显示?我想你会想要
[堆栈]溢出]
,但与
流堆栈溢出时相比,这会变得非常复杂-单词flow在那里有两次(一次是差异,一次是相等),但两者都会突出显示?编辑序列?嗯,编辑距离和顺序很有趣,但我不确定如何使用它们来解决这个问题。解决方案需要走多远?如果将堆栈溢出与堆栈溢出进行比较,会发生什么情况?哪些位会突出显示?我想你会想要
[堆栈]溢出]
,但与
流堆栈溢出相比,这会变得非常复杂-单词flow在那里有两次(一次是差异,一次是相等),但两者都会突出显示。