# c657 - 最長連續字母 ### 題目連結: [c657](https://zerojudge.tw/ShowProblem?problemid=c657) ### 題目解析 * 有多筆字串,每筆字串長度不同,但都為小寫字母組成,需要找出該字串中最長的連續字母,並且輸出該字母的連續長度 ### 題目類型 字串處理/流程控制 ### 範例測資解讀 * 輸入 * 一組測資為一筆到多筆的字串,每行字串的長度未必相同 * 輸出 * 輸出兩個項目,第一個為最長連續的字母,第二個為連續的長度 ### 其他注意事項 * 題目中可以了解如果有多個相同最長長度的字母則輸出最先出現的 ### 程式解析 在一行輸入字串中尋找最長連續字母首先需要知道字串的長度,並且需要至少有兩個變數用來儲存特定的資料 * first_char: 記錄最長的字母 * temp_char: 記錄搜尋過程中目前發現到的最長字母 使用兩個變數的原因是為了確認哪個字母是最長的,如果搜尋過程中有發現更長的字母則替換成新的 first_char 而此題的搜尋方式則是使用線性搜尋,從字串起始到尾端,需要全部都檢查過一次 ### 完整程式碼 (僅提供參考) ``` python=01 import sys #start for s in sys.stdin: data = list(s) # 移除字尾的 \n 換行符號 data.pop() length = len(data) first_char = '' temp_char = '' sum_char = 0 temp_sum = 1 for i in range(length): if i == 0: first_char = data[0] sum_char = 1 else: if data[i] == data[i-1]: temp_char = data[i] temp_sum +=1 else: if temp_sum > sum_char: first_char = temp_char sum_char = temp_sum temp_char = data[i] temp_sum = 1 #end of else if i == length-1: if temp_sum > sum_char: first_char = temp_char sum_char = temp_sum #end of for print(first_char, sum_char) ``` ###### tags: `基礎15題解` `APCS` `ZeroJudge`
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up