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

来源:互联网 发布:台湾ptt大陆网络用语 编辑:程序博客网 时间:2024/04/28 20:39
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 0