int overlap(const char *s1, const char *s2){
int i = 0;
while (s1[i] && s2[i] && s1[i] == s2[i])
i++;
return i;
}
这将返回它作为输入的两个字符串之间重叠的子字符串的长度。但是,如果这两个字符串是:
abcdefg
1234efg
它返回 0 的重叠,因为它只能读取从字符串开头开始的重叠,有人可以修改或帮助我制作它以便它可以读取重叠而不管它们在字符串中的位置吗?
最佳答案
做到这一点的简单方法是为两个字符串构建一个后缀树(这是使用 McCreght 完成的)。现在只需在两个字符串中查找最长的公共(public)子字符串。
关于c - 检测两个字符串之间的重叠长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6026483/