這題的目標是將一個字串中的每個字母都向後移動一定的位數。移動的位數由一個整數陣列指定,該陣列的長度與字串的長度相同。例如,如果我們有一個字串 abc
和一個陣列 [3, 5, 9]
,那麼我們會將 a
向後移動 3
位得到 d
,將 b
向後移動 5
位得到 g
,將 c
向後移動 9
位得到 l
,所以最終結果為 dgl
。
跟一流的人才幹大事,享受成功進步的高級樂趣!
內推機會來啦!能與優秀的程式設計師共事,是特別痛快的事,因為厲害的工程師大神會刺激你想要迎頭趕上的上進心,尤其是一起討論解決方案時,他們會觸發你有更好的解決思維能力,彼此共同成長並且一起享受解謎與破關般的樂趣。 你一定聽得懂我在說甚麼感覺,趕快把握機會,動動手指投遞履歷吧! 立即加入「面試讀書會」,和大家一起準備面試!
內推機會 加入讀書會 (邀請碼:5657)
首先初始化一個變數 sum
為 0
和一個與 s
相同的字元陣列 ans
。然後,從後向前遍歷 s
中的每個字元。對於每個字元,將 shifts
陣列中對應位置的值加到 sum
上,然後將目前字元向後移動 sum
個位數。最後,回傳 ans
陣列轉換成的字串。
class Solution {
fun shiftingLetters(s: String, shifts: IntArray): String {
var sum = 0
val ans = s.toCharArray()
val maxIndex = s.length - 1
for (index in s.indices) {
sum = (sum + shifts[maxIndex - index] % 26)
ans[maxIndex - index] = ((ans[maxIndex - index].toInt() + sum - 97) % 26 + 97).toChar()
}
return String(ans)
}
}
時間複雜度:
,其中 是 s
的長度。這是因為我們需要遍歷 s
中的每個字元。
空間複雜度:
,其中 是 s
的長度。這是因為我們需要宣告一個新的字串來存儲結果。此外,我們還需要存儲 shifts
陣列。
內推機會來啦!
跟一流的人才幹大事,享受成功進步的高級樂趣!
內推機會 加入讀書會 (邀請碼:5657)