你得到一個字串 my_string 和一個正整數 k。撰寫代碼,列印長度為 k 的 my_string 的第一個子字串,其所有字符都相同(小寫和大寫不同)。如果不存在這樣的錯誤訊息,請列印相應的錯誤訊息(參見下面的示例 4)。特別是,后者在 my_string 為空時成立。
示例:對于輸入 my_string = “abaadddefggg”,k = 3,輸出為 對于長度 3,找到子字串 ddd!示例:對于輸入 my_string = “abaadddefggg”, k = 9,輸出為 未找到長度為 9 的子字串
這是我的嘗試:
my_string = 'abaadddefggg'
k = 3
s=''
for i in range(len(my_string) - k 1):
if my_string[i:i k] == my_string[i] * k:
s = my_string[i:i k]
if len(s) > 0:
print(f'For length {k}, found the substring {s}!')
else:
print(f"Didn't find a substring of length {k}")
uj5u.com熱心網友回復:
你需要break
. 當您發現第一次出現時,您需要從for-loop
. 您可以使用break
. 如果你不break
繼續,也許會找到最后一次出現(如果存在)。
my_string = 'abaadddefggg'
k = 3
s=''
for i in range(len(my_string) - k 1):
if my_string[i:i k] == my_string[i] * k:
s = my_string[i:i k]
break
if len(s) > 0:
print(f'For length {k}, found the substring {s}!')
else:
print(f"Didn't find a substring of length {k}")
您可以使用itertools.groupby
,也可以撰寫一個函式并使用return
,然后return
從function.
import itertools
def first_occurrence(string, k):
for key, group in itertools.groupby(string):
lst_group = list(group)
if len(lst_group) == k:
return ''.join(lst_group)
return ''
my_string = 'abaadddefggg'
k = 3
s = first_occurrence(my_string, k)
if len(s) > 0:
print(f'For length {k}, found the substring {s}!')
else:
print(f"Didn't find a substring of length {k}")
uj5u.com熱心網友回復:
使用迭代器的另一種方法:
my_string = 'abaadddefggg'
N= 3
ou = next((my_string[i:i N] for i in range(len(my_string)-N)
if len(set(my_string[i:i N])) == 1), 'no match')
輸出:'ddd'
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/532058.html