求一个字符串中最长连续子串
2013-08-20 16:43
411 查看
找出一个字符串中最长连续相邻子串,比如ababcabc,最长连续子串是abc。
下面是我写的代码,但是有个问题就是当出现abcdabcabcd时,它找到的最长连续子串是abc,而不是abcd。
还有一个问题???
到底什么才叫最长连续子串??
下面是我写的代码,但是有个问题就是当出现abcdabcabcd时,它找到的最长连续子串是abc,而不是abcd。
还有一个问题???
到底什么才叫最长连续子串??
#include<stdio.h> #include<stdlib.h> #include<string.h> void FindStr(char* str,char *result) { char *pStr = str; char *qStr = str+1; int num=0; int max=0; char *maxindex; while( *pStr!='\0' ) { if(*pStr != *qStr ) qStr++; else { while(*pStr==*qStr) { pStr++; qStr++; num++; } if(*qStr=='\0') //如果相同的刚好到最后了,则qStr要回到pStr+1(这时的pStr已经指向了下一个) qStr = pStr+1; } if(num>max) { max = num; maxindex =pStr-max; } if(*qStr=='\0') {//如果一个字符,后面一直没找到相同的,那么pStr要加1指向下一个字符,qStr要指向pStr的下一个 pStr++; qStr = pStr+1; } num=0; } if(max==1) { printf("没有连续子串\n"); exit(0); } else { for(int i=0;i<max;i++) *result++ = *maxindex++; } *result = '\0'; } int main() { char *str = "abcdabcabcd"; int len = strlen(str); char *result = (char*)malloc(sizeof(char)*len); FindStr(str,result); printf("%s\n",result); return 0; }
相关文章推荐
- 给定一个字符串,求出最长的连续配对括号子串的长度
- 用三重循环求一个字符串的最大回文串(连续重复出现的最长子串)
- 求一个字符串中最长的非重复连续子串
- 找出一个字符串中最长连续相同子串
- 求无符号数二进制中1的个数&&求一个字符串中最长的连续子串
- 找出一个字符串中最长连续相同子串
- 求一个字符串中的最长连续子串
- 求一个字符串的最长无重复字母的连续子串
- 输入一个字符串A,求其中最长的连续递增子串的长度。例如 "hidefef" 中最长的连续递增子串是 "def" ,长度为 3
- 找出一个字符串中最长的连续数字子串,输出该字符串及长度
- 找出一个字符串中最长回文子串
- 一个字符串,输出字符串中连续最长的数字串,并输出个数
- 找出字符串中的最长连续数字子串
- 用递归算法写一个函数,求字符串最长连续字符的长度,比如aaaabbcc的长度为4,aabb的长度为2,ab的长度为1。
- 求一个字符串中连续出现次数最多的子串
- 在一个字符串中找出以同样的顺序连续出现在另一个字符串中的最长连续字符串的长度
- 回文串是指这个字符串无论从左读还是从右读,所读的顺序是一样的;简而言之,回文串是左右对称的。现在,对于一个给定的母串 abcdedcb求最长回文子串的长度
- 求一个字符串中【连续】出现次数最多的子串
- 在一个字符串中寻找到最长重复子串(1)
- poj 3294 Life Forms 求n(n>1)个字符串的最长的一个子串 后缀数组