leetcode題庫——無重複字元的最長子串
阿新 • • 發佈:2018-12-13
題目描述:
給定一個字串,找出不含有重複字元的最長子串的長度。
示例 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 = 0; if(s.size() == 0) return max; for(int i = 0; i < s.size(); i++){ int j,k; int len = 1; if(len > max) max=len; if(i == s.size()-1) break; for(j = i + 1; j < s.size(); j++){ int k; for(k=i;k<j;k++){ if(s[k]==s[j]){ len=j-i; break; } } if(k==j) len=j-i+1; if(len>max){ max=len; } if(k!=j&&s[k]==s[j]) break; } if(len>max){ max=len; } } return max; } };
執行用時:168 ms
思路:
設定一個for迴圈遍歷字串,第二個和第三個for迴圈遍歷不重複子串長度。要注意字串為空以及只有一個元素的字串的情況。
其他:
這種方法太暴力,複雜度高,若有更好的方法,歡迎指導交流!