3 無重複字元的最長子串

2021-10-18 18:52:23 字數 1630 閱讀 1034

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

示例 1:

輸入: s = "abcabcbb"

輸出: 3 

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

示例 2:

輸入: s = "bbbbb"

輸出: 1

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

示例 3:

輸入: s = "pwwkew"

輸出: 3

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

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

示例 4:

輸入: s = ""

輸出: 0

0 <= s.length <= 5 * 104

s由英文本母、數字、符號和空格組成

題目要求是統計無重複的最長字串,所以第一反應是遍歷字串,然後用乙個陣列記錄遇到的字元,然後記錄未訪問過的字元個數,並遇到重複字元後更新最長長度

在實現過程中,c語言利用字元的ascii碼來作陣列索引,由於題目要求是字元包括空格和字母,空格的ascii碼是32,字母為說明大小寫,所以都考慮,最大的字母是小寫字母z,ascii碼是122,所以記錄陣列大小設為90+5

c++和python都是物件導向語言,直接使用集合操作

c語言:

int lengthoflongestsubstring(char * s)

else

j++;

}if (len > mlen)

i++;

}return mlen;

}

c++:

class solution 

else

j++;

}if (len > mlen)

i++;

}return mlen;

}};

python:

class solution:

def lengthoflongestsubstring(self, s: str) -> int:

mlen = 0

for i in range(0, len(s)):

lens = 0

flag =

for j in range(i, len(s)):

if (s[j] in flag):

break

else:

flag.add(s[j])

lens += 1

if lens > mlen:

mlen = lens

return mlen

3 無重複字元的最長子串

給定乙個字串,找出不含有重複字元的最長子串的長度。示例 給定 abcabcbb 沒有重複字元的最長子串是 abc 那麼長度就是3。給定 bbbbb 最長的子串就是 b 長度是1。給定 pwwkew 最長子串是 wke 長度是3。請注意答案必須是乙個子串,pwke 是 子串行 而不是子串。思路 用 i...

3 無重複字元的最長子串

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

3 無重複字元的最長子串

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