Leetcode Longest-substring-without-repeating

题目描述

给定一个字符串,找出最长的不具有重复字符的子串的长度。例如,“abcabcbb”不具有重复字符的最长子串是“abc”,长度为3。对于“bbbbb”,最长的不具有重复字符的子串是“b”,长度为1。

 

思路:

滑动窗口方式,即一旦发现新来的元素与当前窗口内的元素相等,那么调整窗口为之前重复元素的下一个

具体实现采取 Map<char,int>即存放当前元素的位置下标


 int lengthOfLongestSubstring(string s)
 {
     int len = s.length();
      if(len==0) return 0;
     int maxLen = 0,left = 0;
     
      map<char,int> charMap;
     
      for(int i=0;i<len;i++)
      {
          if(charMap.find(s[i]) != charMap.end())
             left = max(left,charMap[s[i]]+1);
          maxLen = max(maxLen,i-left+1);
          charMap[s[i]] = i;
      }
      return maxLen; 
  }

 

©️2020 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页