Leetcode 3无重复字符的最长字串

class Solution {
    public int lengthOfLongestSubstring(String s) {
        //定义一个map<k,v>,key存字符,value存字符下标(位置)
       int len = 0;
       Map<Character,Integer> map = new HashMap<>();
        for(int start = 0,end = 0;end<s.length();end++){
             char a = s.charAt(end);
              if(map.containsKey(a)){
               //调整左边界为end的位置
               start = Math.max(map.get(a),start);
              }
               len =  Math.max(end-start+1,len);
               map.put(a,end+1);
            
        }
        return len;

    }
}

解法:滑动窗口

1.遇到重复字符,调整左边界到重复字符的位置

2.字符不重复,右边界向右扩展

举例:

LeetCode题解

posted @ 2021-05-14 16:29  Lllamb  阅读(37)  评论(0编辑  收藏  举报