📅  最后修改于: 2023-12-03 14:39:40.263000             🧑  作者: Mango
在C语言中,字符串是一组字符的序列,以字符数组的形式存储,以NULL终止。在字符串处理中,有些问题是程序员需要注意的。在本文中,我们将介绍一个常见的字符串问题:字串问题8。
给定一个字符串,找到所有长度为k且恰好出现n次的子串。
我们可以使用两个嵌套的循环遍历所有可能的子串,并且用一个计数器来记录每个子串出现的次数。如果子串出现n次,我们将其存储到结果集合中。最终,我们将结果集合返回。
#include <stdio.h>
#include <string.h>
#define MAX_LENGTH 100
void findSubstrings(char str[], int n, int k) {
int count[MAX_LENGTH] = {0};
int len = strlen(str);
for(int i = 0; i <= len - k; i++) {
for(int j = 0; j <= len - k; j++) {
if(strncmp(str + i, str + j, k) == 0) {
count[i]++;
}
}
}
for(int i = 0; i <= len - k; i++) {
if(count[i] == n) {
printf("%.*s\n", k, str + i);
}
}
}
int main() {
char str[] = "hello world, how are you? are you ok?";
int n = 2;
int k = 3;
findSubstrings(str, n, k);
return 0;
}
在上面的代码中,我们定义了一个findSubstrings()
函数,它接受三个参数:一个字符串,一个整数n,一个整数k。该函数遍历所有可能的长度为k的子串,并使用一个计数器来统计每个子串出现的次数。
最后,它打印出所有出现恰好n次的子串。
在main()
函数中,我们调用findSubstrings()
函数并传递一个字符串、一个整数n和一个整数k。我们可以根据需要修改这些参数。
在本文中,我们介绍了一个C语言中的常见字符串问题——字串问题8。我们讨论了如何解决这个问题,并给出了一个简单的代码实现。如果您有任何问题,请随时在评论区提出。