前往
大廳
主題

LeetCode - 1844. Replace All Digits with Characters 解題心得

Not In My Back Yard | 2021-07-01 00:00:04 | 巴幣 0 | 人氣 213

題目連結:


題目意譯:
你被給定一個索引值從 0 開始計算的字串 s ,其在偶數索引值的位置有著小寫英文字母、奇數索引值位置則有著數字。

此時有著一個函數 shift(c, x) ,其中 c 是一個字元且 x 為一個數字,它會回傳排在 c 之後的第 x 個字元。

例如,shift('a', 5) = 'f' 而 shift('x', 0) = 'x'。

對於每個奇數索引值 i,你希望將該數字 s[i] 替換為 shift(s[i-1], s[i])。

回傳將所有數字替換後的 s 。保證 shift(s[i-1], s[i]) 不會超過 'z' 。

限制:
1 ≦ s.length ≦ 100
s 只包含小寫英文字母以及數字。
shift(s[i-1], s[i]) <= 'z' 對於所有奇數索引值 i 。



範例測資:
範例 1:
輸入: s = "a1c1e1"
輸出: "abcdef"
解釋: 數字們替換為以下:
- s[1] → shift('a', 1) = 'b'
- s[3] → shift('c', 1) = 'd'
- s[5] → shift('e', 1) = 'f'

範例 2:
輸入: s = "a1b2c3d4e"
輸出: "abbdcfdhe"
解釋: 數字們替換為以下:
- s[1] → shift('a', 1) = 'b'
- s[3] → shift('b', 2) = 'd'
- s[5] → shift('c', 3) = 'f'
- s[7] → shift('d', 4) = 'h'


解題思維:
就單純地掃過字串 s 並模擬題目的要求即可。

我們從索引值 i = 1 開始,每次將 s[i] 替換成 s[i - 1] + s[i] - '0' (此即代表著 shift(s[i-1], s[i])),然後將 i 加 2 。

重複以上步驟直到 i ≧ s.length 。此時的 s 即是所求。




此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。

創作回應

相關創作

更多創作