這題的目標是將一個字串中的數字替換為字母。這個字串中的每個偶數 index 位置都是一個小寫字母,而每個奇數 index 位置都是一個介於 0
到 9
之間的數字。這個數字表示我們需要將前一個字母向後移動的位數。例如,如果我們有一個字串 a1c1e1
,那麼我們會將其轉換為 abcdef
。
跟一流的人才幹大事,享受成功進步的高級樂趣!
內推機會來啦!能與優秀的程式設計師共事,是特別痛快的事,因為厲害的工程師大神會刺激你想要迎頭趕上的上進心,尤其是一起討論解決方案時,他們會觸發你有更好的解決思維能力,彼此共同成長並且一起享受解謎與破關般的樂趣。 你一定聽得懂我在說甚麼感覺,趕快把握機會,動動手指投遞履歷吧! 立即加入「面試讀書會」,和大家一起準備面試!
內推機會 加入讀書會 (邀請碼: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')
}
時間複雜度:
,其中 是輸入字串的長度。這是因為我們需要遍歷 input string 中的每個字元。
空間複雜度:
,其中 是輸入字串的長度。這是因為我們需要宣告一個新的字串來存儲結果。
內推機會來啦!
跟一流的人才幹大事,享受成功進步的高級樂趣!
內推機會 加入讀書會 (邀請碼:5400)