【剑指offer】面试题48. 最长不含重复字符的子字符串(java)
請從字符串中找出一個最長的不包含重復字符的子字符串,計算該最長子字符串的長度。
?
示例?1:
輸入: "abcabcbb"
輸出: 3?
解釋: 因為無重復字符的最長子串是 "abc",所以其長度為 3。
示例 2:
輸入: "bbbbb"
輸出: 1
解釋: 因為無重復字符的最長子串是 "b",所以其長度為 1。
示例 3:
輸入: "pwwkew"
輸出: 3
解釋: 因為無重復字符的最長子串是?"wke",所以其長度為 3。
?? ? 請注意,你的答案必須是 子串 的長度,"pwke"?是一個子序列,不是子串。
?
提示:
s.length <= 40000
代碼:
class?Solution?{
????public?int?lengthOfLongestSubstring(String?s)?{
????????Set<Character>?set?=?new?HashSet<>();
????????int?left?=?0,?right?=?0,?max?=?0;
????????while(right?<?s.length())?{
????????????while(set.contains(s.charAt(right)))?{
????????????????set.remove(s.charAt(left));
????????????????left++;
????????????}
????????????set.add(s.charAt(right));
????????????right++;
????????????max?=?Math.max(right?-?left,?max);
????????}
????????return?max;
????}
}
總結
以上是生活随笔為你收集整理的【剑指offer】面试题48. 最长不含重复字符的子字符串(java)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C语言中关于字符数组输入,scanf没执
- 下一篇: 【剑指offer】面试题32 - II: