求字符串中由连续的相同字符组成的最长子串(如果有两个及两个以上的最长子串,则输出第二个)

public class MaxChildStr {

	
	public static void main(String[] args) {
		
		process(new String("zzzzxxxxffffr"));
		process(new String("zzzzxxxxxfffffrrrrr"));
		process(new String("zzzzxxxxxfffffrrrrrttttttttt"));
		process(new String("zzzzxxxxxfffrrr"));
		process(new String("zzzzxxxffffr"));
		process(new String("zzzzxxxxxfffrrrrr"));
		process(new String("rfsdrrddff"));
		process(new String("rfsd"));
		process(new String("rdr"));
		process(new String("rd"));
		process(new String("r"));
		process(new String(""));

	}
	static void process(String s) {
		if(s.length() == 0) {
			System.out.println("空串!");	
			return;
		}
		
		int len=1, index=0;
		int maxLen=1, maxIndex=0;
		int count = 1;
		for(int i=1; i<s.length(); i++) {
			if(s.charAt(i) != s.charAt(i-1)) {
				if(len >= maxLen) {
					if(len == maxLen) {
						count ++;
						if(count == 2) {
							if(len == 1)
								maxIndex = i;
							else 
								maxIndex = index;
						} 
					} else {
						maxLen = len;
						maxIndex = index;
						count = 1;
					}
					
					
				} 
				len = 1;
				index = i;
			} else {
				len ++;
			}
		}
		if(len >= maxLen) {
			if(len == maxLen) {
				count ++;
				if(count == 2) {
					maxLen = len;
					maxIndex = index;
				} 
			} else {
				maxLen = len;
				maxIndex = index;
			}			
		} 
		System.out.println("最长子串的第一个索引为: " + maxIndex + ", 长度为: " + maxLen);

	}

}



结果:

最长子串的第一个索引为: 4, 长度为: 4
最长子串的第一个索引为: 9, 长度为: 5
最长子串的第一个索引为: 19, 长度为: 9
最长子串的第一个索引为: 4, 长度为: 5
最长子串的第一个索引为: 7, 长度为: 4
最长子串的第一个索引为: 12, 长度为: 5
最长子串的第一个索引为: 6, 长度为: 2
最长子串的第一个索引为: 1, 长度为: 1
最长子串的第一个索引为: 1, 长度为: 1
最长子串的第一个索引为: 1, 长度为: 1
最长子串的第一个索引为: 0, 长度为: 1
空串!




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值