[leetcode]無重複字元的最長子串(Longest Substring Without Repeating Characters)
阿新 • • 發佈:2018-12-18
無重複字元的最長子串(Longest Substring Without Repeating Characters)
給定一個字串,找出不含有重複字元的最長子串的長度。
示例 1:
輸入: "abcabcbb"
輸出: 3
解釋: 無重複字元的最長子串是 "abc",其
長度為 3。
示例 2:
輸入: "bbbbb"
輸出: 1
解釋: 無重複字元的最長子串是 "b"
,其長度為 1。
示例 3:
輸入: "pwwkew" 輸出: 3 解釋: 無重複字元的最長子串是"wke"
,其長度為 3。 請注意,答案必須是一個子串,"pwke"
是一個子序列 而不是子串。
題解:
class Solution { public: int lengthOfLongestSubstring(string s) { int length=s.length(); int mmax=0; if(length<=1) mmax=length; set<char> t; for(int i=0;i<length;i++) { for(int j=i;j<length;j++) { if(t.count(s[j])) { break; } else t.insert(s[j]); } int size=t.size(); mmax=(mmax>size) ? mmax:size; t.clear(); } return mmax; } };
首先排除長度小於等於1的特殊情況,然後建立一個set,利用set中的方法count() 來查詢set中某個某個鍵值出現的次數,迴圈遍歷,沒有在set裡面出現過的會加進set,出現過就停止本次迴圈,這樣set的大小就是本次迴圈的結果,再加個比較篩選最大值得程式碼就可以了。