2022-7-8 剑指offer-字符串-滑动窗口

剑指 Offer 48. 最长不含重复字符的子字符串

难度中等

请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。

 1 class Solution {
 2     public int lengthOfLongestSubstring(String s) {
 3         int left=0,right=0;
 4         Set<Character> set=new HashSet<>();
 5         int ans=0;
 6         while (right<s.length()){
 7             char c=s.charAt(right);
 8             if (!set.contains(c)) {
 9                 right++;
10                 set.add(c);
11                 ans=Math.max(ans,right-left);
12             }else{
13                 while (left<right&&set.contains(c)){
14                     set.remove(s.charAt(left));
15                     left++;
16                 }
17             }
18         }
19         return ans;
20     }
21 }

思路:滑动窗口和集合判断字串是否有重复

posted on 2022-07-08 14:56  阿ming  阅读(7)  评论(0编辑  收藏  举报

导航