2.求最大连续递增数字串(如“ads3sl456789DF3456ld345AA”中的“456789”)
/* 2.求最大连续递增数字串 比较简单: 首先是数字串 要连续递增12345... 然后找长度最长的 */ #include<iostream> #include<stdio.h> using namespace std; int GetSubString(char *str1, char *str2) { int i,k=0,head=0,max=0,len; len=0; for(i=0;str1[i]!='\0';i++) { if(str1[i] >='0'&&str1[i]<='9'&&str1[i-1]>='0'&&str1[i]==str1[i-1]+1) len++; // 是数字串 还是连续的当前比上一个大1 则长度增1 else { // 出现字符或不连续数字 if(len>max) { max=len;//保存最大长度 head=k;//保存起始位置 } // 该字符是数字,但数字不连续 if(str1[i]>='0'&&str1[i]<= '9') { k=i;//重新开始 len=1; } } } for(k=0;k<max;k++) // 将原字符串中最长的连续数字串赋值给结果串 str2[k]=str1[head++]; str2[k]='\0'; return max; // 返回连续数字的最大长度 } int main() { char str1[]="ads3sl456789DF3456ld345AA"; char str2[sizeof(str1)]; printf("%s中最大连续递增数字串:\n",str1); printf("长度:%d, 内容:%s \n",GetSubString(str1,str2),str2); }