重複字元最長串 python版本

2021-10-04 19:05:35 字數 1451 閱讀 9343

題目:

給定一串字元,裡面有些字元有連續出現的特點,請尋找這些連續出現字元中最長的串,

如果最長的串有多個,請輸出字元ascii碼最小的那一串。

例如:輸入aaabbbbbcccccccczzzzzzzz,輸出cccccccc。

思路:採用反向遍歷的思路

def

maxrepeatstr

(arr):if

not arr:

return arr

# 去重後的每個元素的重複字串可能的最大長度

len_up_border =

len(arr)

-len

(set

(arr))+

1# 快取遍歷,最大長度和當前元素(分別初始化為1和最大ascii碼對應的字元)

max_len =

1 cur_element =

chr(

127)

# res[max_len] = min_ascii_element_with_max_length

res =

# 長度反向遍歷的跳出標識

flag =

false

for i in

range

(len_up_border,0,

-1):

for s in

set(arr)

: spt = s * i

# 以 spt 分割原始字串作為判斷依據:如果spt在arr中存在,則分割後長度》1; 若不存在,分割後長度=1

splited = arr.split(spt)

iflen

(splited)

>1:

# print('i-->', i, 's-->', s, 'splited-->', splited)

max_len =

max(max_len, i)

cur_element =

min(cur_element, s)

res[i]

= cur_element

flag =

true

if flag:

break

output =

[v * k for k, v in res.items()]

return output[

0]

測試結果:

arr =

'aaaaaaaaaaaaaasdffdiiiiiiiiiiiiii--------------558/**'

# print('--->', arr.split('aaaaaaaaaaaaaa'), len(arr.split('aaaaaaaaaaaaaa')))

res = maxrepeatstr(arr)

print

(res)

無重複字元的最長子串 python

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

Python 無重複字元的最長子串

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

03 無重複字元的最長子串 python

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