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。

  2. 每檢查 1 個字元,額度先減 1;若該字元為數字 d(0, 1, 2, …, 9),額度再加 d,也就是說,遇到數字的話,額度先減 1 再加 d,遇到英文字母的話,只會讓額度減 1。

  3. 只要額度歸零,立即停止,不再檢查後續字元。

  4. 若檢查整個字串但還有額度,仍然會停止繼續檢查。

  5. 最後輸出檢查過的字元,也就是字串的片段。

本題不需要使用陣列或特殊資料結構。

輸入值的格式

  • 一個字串,內容只會包含英文字母與數字:[A-Z]、[a-z]、[0-9]。
  • 長度 1 到 20。

輸出值的格式

  • 一個字串,也就是「依規則實際被檢查到的字元」之串接。

各種需要注意的邊界條件

  • 最短輸入:長度為 1 的字串(字母或數字)。
  • 首字元為字母:初始額度 1,處理首字元後額度變 0,直接停止。
  • 首字元為 '0':處理後額度 0,直接停止。
  • 數字 d 的效果:先減 1 再加 d;d=0 不會增加額度。
  • 不存在「額度歸零後再補充」的情形,因為歸零即停。題目說的「添加額度」都是指「在歸零之前遇到數字而提升額度」。
  • 可能中途多次使額度回到 1。
  • 可能正好在結尾更新後歸零;也可能到結尾仍有剩餘額度。

sample input1

a

sample output1

a

解釋:首字為字母。額度 1 -> 處理 'a' 後為 0,停止。輸出 "a"。

sample input2

4abc3de9z

sample 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

There are no comments at the moment.