c - 检测两个字符串之间的重叠长度

标签 c string overlap

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/

相关文章:

谁能解释一下c中这段和平代码的含义

c - 无法使文件 I/0 在周期计数器功能 -c 中工作

ruby - 如何在使用 Ruby 的某个单词后获取字符串的一部分?

c++ - 最大重叠事件数的持续时间

c - 这个迷你 HashMap 有什么问题?

html - HTML 页面中的 C 代码

sql - 如何比较一行中的重叠值?

r - 使用 data.table 查找时间戳对之间重叠的持续时间

java - 存储为字符串的 Android SQL Lite int 值在检索时显示额外字符

Python简单输入错误