码迷,mamicode.com
首页 > 其他好文 > 详细

3. Longest Substring Without Repeating Characters

时间:2019-01-10 13:20:19      阅读:115      评论:0      收藏:0      [点我收藏+]

标签:character   hash   map   default   string   ges   ash   temp   hashmap   

Given a string, find the length of the longest substring without repeating characters.

Example 1:

Input: "abcabcbb"
Output: 3 
Explanation: The answer is "abc", with the length of 3. 
Example 2:

Input: "bbbbb"
Output: 1
Explanation: The answer is "b", with the length of 1.
Example 3:

Input: "pwwkew"
Output: 3
Explanation: 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.
class Solution {
    public int lengthOfLongestSubstring(String s) {
        int res = 0;
        int left = 0, right = 0;
        int counter = 0;
        Map<Character, Integer> map = new HashMap<>();
        while(right < s.length()) {
            char c = s.charAt(right);
            map.put(c, map.getOrDefault(c, 0) + 1);
            if(map.get(c) > 1) {
                counter++;
            }
            right++;
            while(counter > 0) {
                char cTemp = s.charAt(left);
                if(map.get(cTemp) > 1) counter--;
                map.put(cTemp, map.get(cTemp) - 1);
                // if(map.get(cTemp) <= 1) {
                //     counter--;
                //     if(counter == 0) {
                //         res = Math.max(res, right-left);
                //         break;
                //     }
                // }
                left++;
            }
            int len = right - left;   
            res = Math.max(res, len);
        }
        return res;
    }
}

3. Longest Substring Without Repeating Characters

标签:character   hash   map   default   string   ges   ash   temp   hashmap   

原文地址:https://www.cnblogs.com/lawrenceSeattle/p/10249241.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!