leetcode2109_go_向字串新增空格

題目

給你一個下標從 0 開始的字串 s ,以及一個下標從 0 開始的整數陣列 spaces 。

陣列 spaces 描述原字串中需要新增空格的下標。每個空格都應該插入到給定索引處的字元值 之前 。

例如,s = “EnjoyYourCoffee” 且 spaces = [5, 9] ,那麼我們需要在 ‘Y’ 和 ‘C’ 之前新增空格,

這兩個字元分別位於下標 5 和下標 9 。因此,最終得到 “Enjoy Your Coffee” 。

請你新增空格,並返回修改後的字串。

示例 1:輸入:s = “LeetcodeHelpsMeLearn”, spaces = [8,13,15] 輸出:“Leetcode Helps Me Learn”

解釋:下標 8、13 和 15 對應 “LeetcodeHelpsMeLearn” 中加粗斜體字元。

接著在這些字元前新增空格。

示例 2:輸入:s = “icodeinpython”, spaces = [1,5,7,9] 輸出:“i code in py thon”

解釋:下標 1、5、7 和 9 對應 “icodeinpython” 中加粗斜體字元。

接著在這些字元前新增空格。

示例 3:輸入:s = “spacing”, spaces = [0,1,2,3,4,5,6] 輸出:“ s p a c i n g”

解釋:字串的第一個字元前可以新增空格。

提示:1 <= s。length <= 3 * 105

s 僅由大小寫英文字母組成

1 <= spaces。length <= 3 * 105

0 <= spaces[i] <= s。length - 1

spaces 中的所有值 嚴格遞增

解題思路分析

1、雙指標;時間複雜度

O(n),

空間複雜度

O(n)

leetcode2109_go_向字串新增空格

func addSpaces(s string, spaces []int) string { res := make([]byte, 0) if len(spaces) == 0 { return s } j := 0 for i := 0; i < len(s); i++ { if j < len(spaces) && i == spaces[j] { res = append(res, ‘ ’) j++ } res = append(res, s[i]) } return string(res)}

總結

Medium題目,簡單的雙指標問題