https://zerojudge.tw/ShowProblem?problemid=a520
https://onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=3847
X
本題中你要模擬這個程序並回報需要幾個「全部取代」的動作
我認為的關鍵點在題目的示範~
"A0very00big0000joke." -> "A0very0big00joke." -> "A0very0big0joke.”
我把空格換成橘色的零,方便大家觀察
第一次動作是把 very & big 中間,以及 big & joke 之間都除以二,因為二換一
會發現他是同時動作的,短的無論如何都會比最長的來得快被處理完畢
也就是說只要找出輸入資料當中的「最長連續空格數」就可以知道至少要幾次動作才可以完成全部
我用 LC 變數紀錄字串中「最長連續空格數」
for c in s: # 找最長連續空格紀錄在 LC
if c == " ":
cur += 1
else:
LC = max(LC, cur)
cur = 0
再來是計算需要幾次動作才能完成
用 while 迴圈 while LC > 1
:,只要 LC 還大於 1 就代表還有辦法二換一