字符串

 读入一个字符串str,输出字符串str中连续最长的数字串

 例如输入abcd1234erter123456789ABCD, 输出123456789

设计思路:在尽量减小时间复杂度的条件下,使用一个大循环,停止条件为遇到字符串结束符。当遇到数字串就装进带判断字符数组内,并记录该数字串长度Gu,若该数字串大小大于Max,将其拷贝入最大字符数组内,当遇到其他字符串时仅移动指针。注意在找最长数字串的时候别忘了用一个指针定位该数字串的头

#include<iostream>
#include<string.h>
using namespace std;

int main()
{
	char *p = (char*)malloc(100);
	char *p1 = NULL;
	char max[100] = {};
        char gu[100] = {};
	int Max = 0, Gu = 0;
	cout<<"Please input string: ";
	cin>>p;
	p1 = p;
	while(p1[0]!='\0')
	{
		while(p1[0]<58 && p1[0]>47)
		{
			p1++;
			Gu++;
		}
		if(Gu>Max)
		{
			strncpy(max, p, Gu);
			p = p1;
			max[Gu] = '\0';
			Max = Gu;
		}
		Gu = 0;
		while(p1[0]>64&&p1[0]<91 || p1[0]>96&&p1[0]<123)
		{
			p1++;
			//Gu++;
		}
		p = p1;
		/*if(Gu>Max)
		{
			strncpy(max, p, Gu);
			p = p1;
			max[Gu] = '\0';
			Max = Gu;
		}	
		Gu = 0;*/

	}
	cout<<max<<endl;
	return 0;
}

 测试结果

 

posted @ 2019-07-19 11:43  C_hp  阅读(162)  评论(0编辑  收藏  举报