其他分享
首页 > 其他分享> > leetcode 3. Longest Substring Without Repeating Characters 无重复字符的最长子串

leetcode 3. Longest Substring Without Repeating Characters 无重复字符的最长子串

作者:互联网

一、题目大意

https://leetcode.cn/problems/longest-substring-without-repeating-characters/

给定一个字符串 s ,请你找出其中不含有重复字符的 **最长子串 **的长度。
示例 1:

输入: s = "abcabcbb"
输出: 3
解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。

示例 2:

输入: s = "bbbbb"
输出: 1
解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。

示例 3:

输入: s = "pwwkew"
输出: 3
解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。
  请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。

提示:

二、解题思路

滑动窗口的思路解决

三、解题方法

3.1 Java实现

public class Solution {
    public int lengthOfLongestSubstring(String s) {
        int[] chars = new int[128];
        int left = 0;
        int maxSize = 0;
        // 窗口右边界向右滑
        for (int right = 0; right < s.length(); right++) {
            chars[s.charAt(right)]++;
            if (chars[s.charAt(right)] == 1) {
                maxSize = Math.max(right - left + 1, maxSize);
            } else {
                // 窗口左边界向右滑
                while(chars[s.charAt(right)] != 1) {
                    chars[s.charAt(left)]--;
                    left++;
                }
            }
        }
        return maxSize;
    }
}

四、总结小记

标签:子串,right,charAt,int,chars,Substring,maxSize,Without,Longest
来源: https://www.cnblogs.com/okokabcd/p/16273018.html