Score
題目來源
- 來源平台:vjudge 平台收錄 UVA 題目
- 題目編號:UVA-1585
- 連結:題目連結
題目描述
給定一個測驗結果的字串,例如 “OOXXOXXOOO”。’O’ 表示該題答對,’X’ 表示該題答錯。每題的分數計算是基於該題本身以及之前連續的 ‘O’ 數量。例如,第 10 題的分數是 3,因為該題本身和前面連續的兩個 ‘O’ 都是正確的。因此,”OOXXOXXOOO” 的總分為 10,其計算方法為 “1+2+0+0+1+0+0+1+2+3”。
思路與解法
分析
分數計算邏輯:對於每一個字符,我們需要計算它應該得多少分。當遇到 ‘O’ 時,我們需要考慮它之前連續的 ‘O’ 的數量,這樣才能計算出它應該得的分數。
變數設置:我們可以使用一個變數
current來記錄當前連續的 ‘O’ 的數量。每次遇到 ‘O’,這個變數加 1;遇到 ‘X’ 時,這個變數重置為 0。然後,我們將current的值加到總分score中。最小化循環:由於每個字符只需要處理一次,因此可以使用一次循環來完成所有計算,這保證了我們的算法是線性的 (O(n))。
解法過程
初始化:設置總分變數
score為 0,以及當前連續 ‘O’ 的計數器current為 0。遍歷字串:
- 檢查每個字符:逐個檢查字串中的每個字符:
- 如果字符是 ‘O’,則
current增加 1,並將current加到score。 - 如果字符是 ‘X’,則將
current重置為 0。
- 如果字符是 ‘O’,則
- 檢查每個字符:逐個檢查字串中的每個字符:
輸出結果:在遍歷結束後,
score即為該測驗結果的最終分數,將其輸出。
代碼實現
1 |
|
- 標題: Score
- 作者: Chenge XI
- 撰寫于 : 2024-08-19 13:53:48
- 更新于 : 2024-09-06 15:58:30
- 連結: https://redefine.ohevan.com/2024/08/19/Score/
- 版權宣告: 本作品采用 CC BY-NC-SA 4.0 进行许可。
留言