1. 最长子字符串将有起始位置(startMaxIndex)和最大长度(maxLength)构成。
2. 每次发现重复字符的时候,与目前最长子字符串的长度比较。
public class GetRepeatString {
public static void main(String args[]){
String s = "abcdefg";
// String s ="dasfasdfuawsardaje";
int startIndex = 0; //现在的子字符串起始位置
int repeatIndex = 0; // 可能出现重复字符的起始位置
int startMaxIndex = 0; //当前最长字符串的起始位置
int maxLength =1;//当前最长字符串的长度
String temp = null; //当前位置字符
for(int i =1;i<s.length();i++) {
temp = s.substring(i, i + 1);
repeatIndex = s.substring(startIndex, i).indexOf(temp);
if(repeatIndex != -1) {
if (i - startIndex > maxLength) {// 发现新的最长字符串
System.out.println("临时最长字符串:"+s.substring(startMaxIndex,startMaxIndex+maxLength));
maxLength = i - startIndex;
startMaxIndex = startIndex;
}
startIndex =startIndex + repeatIndex + 1;
}
}
if(startIndex ==0) // 整个字符串没有重复字符的情况
maxLength = s.length();
System.out.println("最终最长字符串:" +s.substring(startMaxIndex,startMaxIndex+maxLength));
}
}