[Leetcode] 3. Longest Substring Without Repeating Characters (JAVA)

유존돌돌이·2021년 9월 15일
0

Leetcode

목록 보기
13/17
post-thumbnail

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

Example 1:

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

Example 2:

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

Example 3:

Input: s = "pwwkew"
Output: 3
Explanation: The answer is "wke", with the length of 3.
Notice that the answer must be a substring, "pwke" is a subsequence and not a substring.

Example 4:

Input: s = ""
Output: 0

Constraints:

0 <= s.length <= 5 * 104
s consists of English letters, digits, symbols and spaces.

My Code

class Solution {
    public int lengthOfLongestSubstring(String s) {
        Map<Character, Integer> hm = new HashMap<>();
        int idx=0, len=0;
        for(int i=0 ; i<s.length() ; i++) {
            char c = s.charAt(i);
            if(hm.containsKey(c) && idx<=hm.get(c)) {
                idx = hm.get(c)+1;
            }
            hm.put(c, i);
            len = Math.max(len, i-idx+1);
        }
        return len;
    }
}

1개의 댓글

comment-user-thumbnail
2021년 12월 23일

I found that solution very popular and helpful:
https://www.youtube.com/watch?v=-QPgQJl_CDg&ab_channel=EricProgramming

답글 달기