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
空串!