3. 无重复字符的最长子串

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

示例 1:

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

示例 2:

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

解决思路:滑动窗口

class Solution {
    public int lengthOfLongestSubstring(String s) {
        char[] chars = s.toCharArray();
        int[] freq = new int[256];
        int length=chars.length;
        int l=0;
        int r=-1;
        int result=0;
        while(l<length){
          if(r+1<length && freq[chars[r+1]]==0){
              freq[chars[++r]]++;
          }else{
              freq[chars[l++]]--;
          }
          result=r-l+1>result?(r-l+1):result;
        }
        return result;
    }
}

 

posted on 2021-10-10 11:46  溪水静幽  阅读(28)  评论(0)    收藏  举报