iT邦幫忙

2023 iThome 鐵人賽

DAY 17
0

破題

這題的目標是將一個字串中的數字替換為字母。這個字串中的每個偶數 index 位置都是一個小寫字母,而每個奇數 index 位置都是一個介於 09 之間的數字。這個數字表示我們需要將前一個字母向後移動的位數。例如,如果我們有一個字串 a1c1e1,那麼我們會將其轉換為 abcdef

跟一流的人才幹大事,享受成功進步的高級樂趣!
內推機會來啦!能與優秀的程式設計師共事,是特別痛快的事,因為厲害的工程師大神會刺激你想要迎頭趕上的上進心,尤其是一起討論解決方案時,他們會觸發你有更好的解決思維能力,彼此共同成長並且一起享受解謎與破關般的樂趣。 你一定聽得懂我在說甚麼感覺,趕快把握機會,動動手指投遞履歷吧! 立即加入「面試讀書會」,和大家一起準備面試!

https://ithelp.ithome.com.tw/upload/images/20230915/20151958nT7kgUzy4M.png 內推機會 https://ithelp.ithome.com.tw/upload/images/20230902/20151958hbhGNE7BJ4.png 加入讀書會 (邀請碼:5400)

解題思路

首先初始化一個空的答案字串。然後,它遍歷輸入字串中的每個字元。如果當前字元的 index 是偶數,那麼就直接將該字元加到答案字串中。否則,將前一個字元向後移動目前字元表示的位數,並將結果加到答案字串中。最後,回傳答案字串。

程式

class Solution {
    fun replaceDigits(s: String): String {
        var ans = ""
        s.forEachIndexed { index, c ->
            ans += if (index % 2 == 0) c
            else shift(s[index - 1], Character.getNumericValue(c))
        }
        return ans
    }

    fun shift(c: Char, x: Int): Char = c.plus(x).coerceAtMost('z')
}

複雜度分析

  • 時間複雜度:
    On,其中 n 是輸入字串的長度。這是因為我們需要遍歷 input string 中的每個字元。

  • 空間複雜度:
    On,其中 n 是輸入字串的長度。這是因為我們需要宣告一個新的字串來存儲結果。

pp 更多 LeetCode 解答在此,一起來學習!

內推機會來啦!

跟一流的人才幹大事,享受成功進步的高級樂趣!

https://ithelp.ithome.com.tw/upload/images/20230915/20151958nT7kgUzy4M.png 內推機會 https://ithelp.ithome.com.tw/upload/images/20230902/20151958hbhGNE7BJ4.png 加入讀書會 (邀請碼:5400)

上一篇
LeetCode 1569. Number of Ways to Reorder Array to get Same BST
下一篇
LeetCode 848. Shifting Letters
系列文
破解 Android 工程師面試白板題:30 道面試題目與解答30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言