LeetCode3-无重复字符的最长子串

这题比较难,暂时只有在哔哩哔哩看见一种比官方提交还要牛逼的解法,代码逻辑比较简洁,代码也是比较短
:LeetCode3-无重复字符的最长子串

class Solution {
    public int lengthOfLongestSubstring(String s) {

        int[] pos=new int[128];
        for(int i=0;i<128;++i){
            pos[i]=-1;
        }
        int ans=0;
        for(int i=0,j=0;i<s.length();++i){//i记录右边界,j记录左边界
            j=Math.max(j,pos[s.charAt(i)]+1);//拿到上一个重复出现的字符的位置
            ans=Math.max(ans,i-j+1);//i-j+1是滑动窗口的长度和当前的最优结果比较.
            pos[s.charAt(i)]=i;//记录这个字符出现的位置.
        }
        return ans;
    }
}

你可能感兴趣的:(LeetCode题库,java,最长子串,无重复字符)