String Power Accumulation
Submit solution
Points:
10 (partial)
Time limit:
1.0s
Memory limit:
64M
Authors:
Problem type
Allowed languages
Java 19, Java 8
題目說明
輸入為一行字串,內容只包含英文字母與數字,至少包含一個字元。
程式要輸出該字串的某個片段,輸出的片段長度依照以下規則決定。
簡單來說,就是看輸入內容有沒有遇到數字,有數字才能增加額度,有額度才能繼續檢查後續的字元。額度的變化是本題的重點。
程式逐一檢查每個字元,並且隨時準備改變要繼續讀取多少字,最後輸出「檢查過的字串片段」:
初始額度為 1。
每檢查 1 個字元,額度先減 1;若該字元為數字 d(0, 1, 2, …, 9),額度再加 d,也就是說,遇到數字的話,額度先減 1 再加 d,遇到英文字母的話,只會讓額度減 1。
只要額度歸零,立即停止,不再檢查後續字元。
若檢查整個字串但還有額度,仍然會停止繼續檢查。
最後輸出檢查過的字元,也就是字串的片段。
本題不需要使用陣列或特殊資料結構。
輸入值的格式
- 一個字串,內容只會包含英文字母與數字:[A-Z]、[a-z]、[0-9]。
- 長度 1 到 20。
輸出值的格式
- 一個字串,也就是「依規則實際被檢查到的字元」之串接。
各種需要注意的邊界條件
- 最短輸入:長度為 1 的字串(字母或數字)。
- 首字元為字母:初始額度 1,處理首字元後額度變 0,直接停止。
- 首字元為 '0':處理後額度 0,直接停止。
- 數字 d 的效果:先減 1 再加 d;d=0 不會增加額度。
- 不存在「額度歸零後再補充」的情形,因為歸零即停。題目說的「添加額度」都是指「在歸零之前遇到數字而提升額度」。
- 可能中途多次使額度回到 1。
- 可能正好在結尾更新後歸零;也可能到結尾仍有剩餘額度。
sample input1
asample output1
a解釋:首字為字母。額度 1 -> 處理 'a' 後為 0,停止。輸出 "a"。
sample input2
4abc3de9zsample output2
4abc3de9z解釋:'4':1->0->+4=4;消耗 'a''b''c' 後遇 '3':1->0->+3=3;消耗 'd''e' 後遇 '9':2->1->+9=10;'z':10->9;到結尾停止,仍有剩額度。
Comments