当前位置: 代码迷 >> 综合 >> Leetcode Longest-substring-without-repeating
  详细解决方案

Leetcode Longest-substring-without-repeating

热度:16   发布时间:2024-02-08 16:39:26.0

题目描述

给定一个字符串,找出最长的不具有重复字符的子串的长度。例如,“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; }

 

  相关解决方案