微软等面试100题筛选答案-25-求最长连续数字子串

15 篇文章 0 订阅
6 篇文章 0 订阅
//写一个函数,它的原形是int continumax(char *outputstr,char *intputstr)
//功能:
//在字符串中找出连续最长的数字串,并把这个串的长度返回,
//并把这个最长数字串付给其中一个函数参数outputstr所指内存。
//例如:"abcd12345ed125ss123456789"的首地址传给intputstr后,函数将返回9,
//outputstr所指的值为123456789

public class Problem25 {
	
	static public void print(Object o){
		System.out.println(o);
	}
	static int continumax(char[] outputstr,char[] intputstr){
		int i = 0;
		char cOutputStrtemp[] = new char[1000];
		int Size = 0;
		int tempSize = 0;
		int st = 0;
		for (; i<intputstr.length;i++){
			if (intputstr[i] >= '0' && intputstr[i] <= '9'){
				cOutputStrtemp[tempSize++] = intputstr[i];
			}else{
				if (tempSize > Size){
					cOutputStrtemp = new char[1000];
					Size = tempSize;
					tempSize = 0;
					st = i - Size;
				}
			}
			
		}

		if (tempSize > Size){//最后一位可能是数字
			cOutputStrtemp = new char[1000];
			Size = tempSize;
			tempSize = 0;
			st = i - Size;
		}
		
		for (i = 0; i<Size; i++){
			outputstr[i] = intputstr[st++];
			//print(outputstr[i]);
		}
		
		return Size;
	}
	
	
	public static void main(String args[]){
		String intput = "asda12315asd1a2s5454545";
		char output[] = new char[1000];
		
		int size = continumax(output,intput.toCharArray());
		print(size);
		for (int i = 0; i<size; i++){
			print(output[i]);
		}
		
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值