Leetcode 3 無重複字元的最長子串

2021-10-20 19:56:12 字數 1683 閱讀 2599

無重複字元的最長子串

給定乙個字串,請你找出其中不含有重複字元的 最長子串 的長度。

示例 1:

輸入: s = 「abcabcbb」

輸出: 3

解釋: 因為無重複字元的最長子串是 「abc」,所以其長度為 3。

示例 2:

輸入: s = 「bbbbb」

輸出: 1

解釋: 因為無重複字元的最長子串是 「b」,所以其長度為 1。

示例 3:

輸入: s = 「pwwkew」

輸出: 3

解釋: 因為無重複字元的最長子串是 「wke」,所以其長度為 3。

請注意,你的答案必須是 子串 的長度,「pwke」 是乙個子串行,不是子串。

示例 4:

輸入: s = 「」

輸出: 0

一共有五種解題方法:

// ascii

public

intlengthoflongestsubstring

(string s)

charmap[s.

charat

(j)]

= j+1;

maxlen = math.

max(j +

1- start , maxlen);}

return maxlen;

}// hashmap

public

intlengthoflongestsubstring2

(string s)

map.

put(s.

charat

(j), j)

; ans = math.

max(ans, j - start +1)

;}return ans;

}//滑動視窗解法1:hashset1+hashset2

// for迴圈代替右指標,右指標一直往前,再移動左指標

// hashset1

public

intlengthoflongestsubstring3

(string s)

else

}return ans;

}// hashset2

public

intlengthoflongestsubstring4

(string s)

set.

add(chars[i]);

ans = math.

max(ans, set.

size()

);}return ans;

}//滑動視窗解法2:for迴圈代替左指標,for迴圈裡右指標先移動到最大,然後再移動for迴圈(左指標)到臨界,再移動右指標

public

intlengthoflongestsubstring

(string s)

while

(rk +

1< n &&

!occ.

contains

(s.charat

(rk +1)

))// 第 i 到 rk 個字元是乙個極長的無重複字元子串

ans = math.

max(ans, rk - i +1)

;}return ans;

}

總結一下,基本是雙指標解法或者是單指標+for迴圈!

leetcode 3 無重複的字串

給定乙個字串,請你找出其中不含有重複字元的 最長子串 的長度。示例 1 輸入 abcabcbb 輸出 3 解釋 因為無重複字元的最長子串是 abc 所以其長度為 3。示例 2 輸入 bbbbb 輸出 1 解釋 因為無重複字元的最長子串是 b 所以其長度為 1。示例 3 輸入 pwwkew 輸出 3 ...

leetcode 3 無重複字元的最長字元子串

堅持打卡!題目 給定乙個字串,請你找出其中不含有重複字元的 最長子串 的長度。示例 1 輸入 abcabcbb 輸出 3 解釋 因為無重複字元的最長子串是 abc 所以其長度為 3。示例 2 輸入 bbbbb 輸出 1 解釋 因為無重複字元的最長子串是 b 所以其長度為 1。示例 3 輸入 pwwk...

leetcode 3 最長無重複字串

3.longest substring without repeating characters 題面 given a string,find the length of the longest substring without repeating characters.給定字串,找到最長無重複字...