LeetCode 3.Longest Substring Without Repeating Characters【Java】

题目描述

Longest Substring Without Repeating Characters

AC代码

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

简化之后

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;
    }
}
发布了201 篇原创文章 · 获赞 9 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_40992982/article/details/105516592