请详细说明在C语言中如何在字符串中查找重复子串
时间: 2024-02-24 16:56:55 浏览: 151
给定字符串,查找其中重复的子字符串积重复的次数[参考].pdf
在C语言中,可以使用暴力匹配算法来查找重复子串。具体步骤如下:
1. 遍历整个字符串,将每个字符都作为子串的起始位置。
2. 对于每个起始位置,依次往后匹配,直到找到一个与子串相等的子串或者到达字符串的末尾。
3. 如果找到了一个与子串相等的子串,则说明存在重复子串,记录下该子串的起始位置和长度即可。
代码示例如下:
```
#include <stdio.h>
#include <string.h>
void find_duplicate_substring(char *str) {
int len = strlen(str);
for (int i = 0; i < len; i++) {
for (int j = i + 1; j < len; j++) {
int k = 0;
while (str[i + k] == str[j + k]) {
k++;
if (i + k >= j || j + k >= len) {
break;
}
}
if (k > 0 && (i + k >= j || j + k >= len)) {
printf("Found duplicate substring: %.*s\n", k, &str[i]);
}
}
}
}
int main() {
char str[] = "abcabcabc";
find_duplicate_substring(str);
return 0;
}
```
上述代码中,我们使用两重循环遍历整个字符串,对于每个起始位置,使用 while 循环依次往后匹配,直到找到一个与子串相等的子串或者到达字符串的末尾。如果找到了一个与子串相等的子串,则说明存在重复子串,记录下该子串的起始位置和长度即可。
阅读全文