我的問題是 - 我怎樣才能找到沒有特定字符的最長子字串的長度?
例如,我想在字串“cbdbabdbcbdacbadbcbbcda”中找到最長不帶字母“a”的子字串的長度,答案應該是“7”——不帶“a”的最長字串是“dbcbbcd”。
有哪些可能的方法來做到這一點?
uj5u.com熱心網友回復:
按某個字符拆分字串,在本例中為“a”,計算子字串的長度,并獲得最大值。
string = 'cbdbabdbcbdacbadbcbbcda'
avoid = 'a'
longest_substring = max((len(substring) for substring in string.split(avoid)))
print(longest_substring)
這輸出 7。
如果這樣更容易理解,您顯然可以將理解分成多行等。
uj5u.com熱心網友回復:
基于正則運算式的方法可能re.findall與模式一起使用[b-z] :
inp = "cbdbabdbcbdacbadbcbbcda"
longest = sorted(re.findall(r'[b-z] ', inp), key=len, reverse=True)[0]
print(longest) # dbcbbcd
print(len(longest)) # 7
uj5u.com熱心網友回復:
您也可以使用簡單的 for 回圈來實作此目的。
string = 'cbdbabdbcbdacbadbcbbcda'
avoid = 'a'
max_count, curr_count = 0, 0
for char in string:
if char != avoid:
curr_count = 1
else:
if curr_count > max_count:
max_count = curr_count
curr_count = 0 # Reset curr_count
print(max_count)
輸出:
7
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/465637.html
標籤:python-3.x
上一篇:單擊拒絕/關閉后禁用兩個按鈕
