美文网首页
Leetcode第3题

Leetcode第3题

作者: 永远的太阳0123 | 来源:发表于2018-11-15 10:31 被阅读0次

    链接:https://leetcode.com/problems/longest-substring-without-repeating-characters/
    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.

    (1)滑动窗口思想
    滑动窗口为[i,j-1],如果滑动窗口中存在字符(位置k)与j位置的字符相同,则从set集合中删除[i,k]之间的所有字符;如果滑动窗口中不存在字符与j位置的字符相同,则将j位置的字符加入set集合。

        public int lengthOfLongestSubstring(String s) {
            int n = s.length();
            Set<Character> set = new HashSet<>();
            int ans = 0, i = 0, j = 0;
            while (i < n && j < n) {
                if (!set.contains(s.charAt(j))) {
                    set.add(s.charAt(j++));
                    ans = Math.max(ans, j - i);
                } else {
                    set.remove(s.charAt(i++));
                }
            }
            return ans;
        }
    

    (2)优化的滑动窗口

    相关文章

      网友评论

          本文标题:Leetcode第3题

          本文链接:https://www.haomeiwen.com/subject/ommefqtx.html