现在的位置: 首页 > 综合 > 正文

87 2.求最大连续递增数字串

2018年01月20日 ⁄ 综合 ⁄ 共 728字 ⁄ 字号 评论关闭

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);
}

抱歉!评论已关闭.