从字符串中截取最长的没有重复字符的子字符串(一次循环)

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 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));
    }
}

你可能感兴趣的:(Java)