LeetCode 3.Longest Substring Without Repeating Characters【Java】

Title description

Longest Substring Without Repeating Characters

AC code

class Solution {
    public int lengthOfLongestSubstring(String s) {
        HashMap<Character,Integer> map=new HashMap<>();
        int ans=0;
        for(int i=0,j=0;i<s.length();i++){
            if(!map.containsKey(s.charAt(i)))
                map.put(s.charAt(i),1);
            else{
                int val=map.get(s.charAt(i));
                map.put(s.charAt(i),++val);
            }
            while(map.get(s.charAt(i))>1)
            {   int val=map.get(s.charAt(j));
                map.put(s.charAt(j++),--val);
            }
            
            ans=Math.max(ans,i-j+1);
        }
        return ans;
    }
}

After simplification

class Solution {
    public int lengthOfLongestSubstring(String s) {
        HashMap<Character,Integer> map=new HashMap<>();
        int ans=0;
        for (int j = 0, i = 0; j < s.length(); j++) {
            if (map.containsKey(s.charAt(j))) {
                i = Math.max(map.get(s.charAt(j)), i);
            }
            ans = Math.max(ans, j - i + 1);
            map.put(s.charAt(j), j + 1);
        }
        return ans;
    }
}
Published 201 original articles · Like9 · Visitors 10,000+

Guess you like

Origin blog.csdn.net/weixin_40992982/article/details/105516592