记 leetCode 中第三题的解法

题目如下:
Given a string, find the length of the longest substring without repeating characters.
Examples:

Given "abcabcbb", the answer is "abc", which the length is 3.

Given "bbbbb", the answer is "b", with the length of 1.

Given "pwwkew", the answer is "wke", with the length of 3. Note that the answer must be a substring, "pwke" is a subsequence and not a substring.


希望能使用O(n)时间复杂度来解决这个问题
代码如下:

public int lengthOfLongestSubstring(String s) {
        if(s==null||s.length()==0) { return 0; } // 做非空判断
        if(s.length()==1) { return 1; } //由于下方的代码 在截取字符串的时候要从第二位开始截取并判断 所以在字符串长度为1时 直接返回1即可

        int max = 1;//在排除上方的情况以后 字符串的长度应该从2 开始 那么结果的最小值应该是1
        int nowIndex = 0;// 从最开始开始索引
        for(int i = 1;i -1) { //存在
                nowIndex += (indexOf+1); //字符段位置应该前移到 i 字符串对应的位置
            }else {//不存在
                max = Math.max(i-nowIndex+1, max);//判断新长度和max谁比较大一些
            }
        }
        return max;
    }

以上为解决方案;
暂时记录,如想到更好的方案再回来补充……

你可能感兴趣的:(记 leetCode 中第三题的解法)