C中相同字符子串的递归算法
Recursive algorithm for substrings of the same character in C
我正在尝试构建一个递归算法,该算法从"xxxzzppp"等字符串开始,只有当同一字符的每个序列(连续子字符串)与下一个序列相比由更少或等于的字符组成时,才会返回true。
假设字符串是按字母顺序排列的。
否则返回0
。
示例:
xxppp = 1; // by = I mean that it should return that value when given to the function
xxxp = 0;
nnnpppz = 0;
npz = 1;
npp = 1;
llleeeegggg = 1;
我试过这个:
int CheckOcc(char seq[]) {
int j = 0, counter = 0;
if (strlen(seq) == 0)
return 100; //last is always shorter than nothing
for (j = 0; j < strlen(seq); j++)
if (seq[0] == seq[j])
counter++;
if (counter <= CheckOcc(seq + j))
return counter;
else
return 0;
}
但我就是不能让它发挥作用,有人能给我一个建议吗?我已经看了两个小时了,就是想不通。
编辑:
请注意,通过传递seq+j,我实际上传递的是从刚刚结束的第一个子串之后的第一个子字符串开始的stiring。指针代数是正确的,我只是不知道算法,特别是,我不知道返回什么。非常感谢您的帮助。
尝试这个
#include <stdio.h>
#include <limits.h>
int CheckOcc(char seq[]) {
int j = 0, counter = 0;
if (!*seq) return INT_MAX;
for (j = 0; seq[j] && *seq == seq[j]; j++)
counter++;
return (counter <= CheckOcc(seq + j)) ? counter : 0;
}
int main(void){
char input[128];
while(1 == scanf("%127[^n]%*c", input)){
if(CheckOcc(input))
printf("%s = 1n", input);
else
printf("%s = 0n", input);
}
return 0;
}
相关文章:
- 需要为 C++ 中的以下问题设计递归算法
- 这种用于查找连续子数组中最大和的递归算法有什么优势吗?
- 运行合并排序递归算法时EXC_BAD_ACCESS错误
- 如何改进搜索二项式系数的递归算法
- 如何转换多次调用自己的递归算法?
- 如何将字符串保存在最长的常见子序列递归算法中
- 编写递归算法以从链表中删除元素.编写递归算法以将元素添加到链表中
- 指针似乎迷失在递归算法中
- 如何从递归算法返回节点
- 从递归算法到迭代算法
- 可传递值影响递归算法的渐近时间复杂性
- 我的递归算法中的问题,用于查找所有最短、唯一的路径
- 带有两个递归调用的递归算法的时间复杂性
- 这种递归算法有什么问题?
- C++递归算法中抛出异常
- 将条件递归算法转换为迭代算法
- 递归算法中的分段错误
- printbinary递归算法
- 迭代等价于递归算法
- C中相同字符子串的递归算法