題目描述:
給定乙個字串,請你找出其中不含有重複字元的最長子串的長度。
示例 1:
輸入:"abcabcbb"輸出:3解釋:因為無重複字元的最長子串是 "abc",所以其長度為 3。示例 2:
輸入:"bbbbb"輸出:1解釋:因為無重複字元的最長子串是 "b",所以其長度為 1。示例 3:
輸入:"pwwkew"輸出:3解釋:因為無重複字元的最長子串是 "wke",所以其長度為 3。想法:遍歷給定的字串,同時用佇列(或陣列)記錄下已經被遍歷的字元,用maxlen記錄當前最長子字串,用count計數,每一次遍歷都去佇列(或陣列)中檢查當前字元在之前是否有被遍歷過,若沒有被遍歷過,則將該字元新增到佇列(或陣列)中,且count加1;若已經被遍歷過,則需要將該字元之前(包括該字元)從佇列(或陣列)中移除。(例如:字串為 -->> "adseb請注意,你的答案必須是子串的長度,"pwke" 是乙個子串行,不是子串。
sck",當遍歷到字串中的第二個's'時,佇列中已經記錄的字元有:,則此時應將第乙個's'以及其之前的字元(紅色字元)刪除,每刪除乙個字元count要減1)。
(上面描述的可能比較亂,無奈語文水平有限╮(╯▽╰)╭ 。。。)
因此有兩種方式可以實現,但原理都是一樣的,只是分別用佇列和陣列實現罷了。
1、用佇列實現:
class solution
//未被遍歷,count++
}else
//將當前遍歷的字元新增到佇列中
queue.add(s.charat(i));
maxlen = (maxlen > count) ? maxlen : count;
}return maxlen;
}}
2、用陣列實現:
class solution
}count++;
list.add(s.charat(i));
maxlen = (maxlen > count) ? maxlen : count;
}return maxlen;
}}
最後,各位路過的大佬看到若有更優的解答,歡迎指導,謝謝哦! LeetCode第3題題解 無重複字元的最長子串
題目 leetcode 題目描述 給定乙個字串,請你找出其中不含有重複字元的最長子串的長度。示例 1 輸入 abcabcbb 輸出 3 解釋 因為無重複字元的最長子串是 abc 所以其長度為 3。示例 2 輸入 bbbbb 輸出 1 解釋 因為無重複字元的最長子串是 b 所以其長度為 1。示例 3 ...
LeetCode刷題實戰3 無重複字元的最長子串
題目描述 給定乙個字串,請你找出其中不含有重複字元的最長子串的長度。示例 1 輸入 s abcabcbb 輸出 3 解釋 因為無重複字元的最長子串是 abc 所以其長度為 3。示例 2 輸入 s bbbbb 輸出 1 解釋 因為無重複字元的最長子串是 b 所以其長度為 1。示例 3 輸入 s pww...
leetcode刷題之路3 無重複字元的最長子串
給定乙個字串,請你找出其中不含有重複字元的 最長子串 的長度。示例 1 輸入 abcabcbb 輸出 3 解釋 因為無重複字元的最長子串是 abc 所以其長度為 3。字元陣列和字串的區別,c語言字元陣列和字串區別詳解 開始的想法是在對字元陣列設定兩個指標,初始化乙個在位置0乙個在位置1,ans初始化...