Leetcode每日一道 -- 無重複字元的最長子串
阿新 • • 發佈:2018-11-24
題目連結:https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/description/
題目描述:
給定一個字串,請你找出其中不含有重複字元的 最長子串 的長度。 示例 1: 輸入: "abcabcbb" 輸出: 3 解釋: 因為無重複字元的最長子串是 "abc",所以其長度為 3。 示例 2: 輸入: "bbbbb" 輸出: 1 解釋: 因為無重複字元的最長子串是 "b",所以其長度為 1。 示例 3: 輸入: "pwwkew" 輸出: 3 解釋: 因為無重複字元的最長子串是 "wke",所以其長度為 3。 請注意,你的答案必須是 子串 的長度,"pwke" 是一個子序列,不是子串。
題目分析:本質上也是一個快速查詢問題,細節需要注意。
class Solution { public: int lengthOfLongestSubstring(string s) { int max_len=0,left=0,map[256]={0}; for(int i=0;i<s.length();i++) { if(map[s[i]]==0 || map[s[i]]<left) { max_len=max(max_len,i-left+1); }else { left=map[s[i]]; } map[s[i]]=i+1; } return max_len; } };