java获得两个字符串中相同的最大子字符串
我试图找到两个字符串中最大的子字符串(最小长度为3)。因此,如果我有:
String test1 = "testthatthisworks";
String test2 = "testthisthat";
我需要的答案是:
String[] Answer = ["test", "that", "this"];
我的一个问题是这需要尽可能快。我目前的解决方案是,从最小的字符串开始,使用长度为3的子字符串,然后查看在较大的字符串中是否存在这种情况,如果它确实增加了子字符串的大小,如果不沿1点移动子字符串。问题是,随着字符串长度的增长,这是非常缓慢的。有人能解决这个问题吗
谢谢
# 1 楼答案
这是对
LCS algorithm
的修改,它将返回所有最大长度匹配 最大尺寸:# 2 楼答案
你在找Longest common substring
Java Implementation
# 3 楼答案
搜索最长公共子序列(LCS)问题和算法。通过实现一个查找两个字符串的LCS的算法,您将得到很多提示。下面是一个例子:http://introcs.cs.princeton.edu/java/96optimization/LCS.java.html
如果仔细跟踪LCS算法,它会检索所有公共子字符串,直到找到最长的子字符串。因此,您可以添加一些代码,通过检查这些子字符串的长度来收集它们,即长度>;三,