编程题

 1.字符串中找最大串

交错01串(网易2017秋)
如果一个01串任意两个相邻位置的字符都是不一样的,我们就叫这个01串为交错01串。例如: "1","10101","0101010"都是交错01串。
小易现在有一个01串s,小易想找出一个最长的连续子串,并且这个子串是一个交错01串。小易需要你帮帮忙求出最长的这样的子串的长度是多少。 
import java.util.Scanner;

public class WangYi1 {

	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		while(sc.hasNext()){
			String s=sc.next();
			int maxLen=maxLen(s);
			System.out.println(maxLen);
		}

	}
	public static int maxLen(String s){
		int len=s.length();
		int temLen=1;
		int maxLen=1;
		for(int i=0;i<len-1;i++){			
			if(Integer.parseInt(String.valueOf(s.charAt(i))) + Integer.parseInt(String.valueOf(s.charAt(i+1)))==1){
				temLen++;				
			}else{
				temLen=1;
			}
			maxLen=Math.max(maxLen, temLen);
		}
		return maxLen;
	}
}

说明:本题不记录位置,用临时长度表示即可。一层循环两两比较,若符合临时长度加1,否则归为1.


2.输出字符串中最长的数字字符串和它的长度。如果有相同长度的串,则要一块儿输出,但是长度还是一串的长度

package niuke;

import java.util.ArrayList;
import java.util.Scanner;

public class ShuZiChuan {
	public static void main(String[] args) { 
		Scanner sc=new Scanner(System.in);
		while(sc.hasNext()){
			String s=sc.next();
			String[] ss=s.split("\\D");
			ArrayList<String> list = new ArrayList<String>();
			int max=ss[0].length();
			String ans=ss[0];
			for(int i=0;i<ss.length;i++){
				if(ss[i].length()>max){
					max=ss[i].length();
					ans=ss[i];
				}else if(ss[i].length()==max){
					ans=ans+" "+ss[i];
				}				
			}
			System.out.println("maxLen "+max);
			System.out.println("maxLenString "+ans);
			
		}
	}
}

说明:\d表示数字,\D表示非数字。注意要转义\\D,用split分割。最后取出的是数字串的数组。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值