給你一個下標從?0?開始的字符串?s
?,以及一個下標從?0?開始的整數數組?spaces
?。
數組?spaces
?描述原字符串中需要添加空格的下標。每個空格都應該插入到給定索引處的字符值?之前?。
- 例如,
s = "EnjoyYourCoffee"
?且?spaces = [5, 9]
?,那么我們需要在?'Y'
?和?'C'
?之前添加空格,這兩個字符分別位于下標?5
?和下標?9
?。因此,最終得到?"Enjoy Your Coffee"
?。
請你添加空格,并返回修改后的字符串。
class Solution {public String addSpaces(String s, int[] spaces) {StringBuilder ans=new StringBuilder(s.length()+spaces.length);int j=0;for(int i=0;i<s.length();i++){if(j<spaces.length&&spaces[j]==i){ans.append(' ');j++;}ans.append(s.charAt(i));}return ans.toString();}
}
如果輸入s="nicetomeetyou".spaces[4,6,10]
- 當?
i = 0
?時,j = 0
?,spaces[0] = 4
?,不滿足?spaces[j] == i
?,執行?ans.append(s.charAt(0))
?,此時?ans
?為?"n"
?。 - 當?
i = 1
?時,同理,執行?ans.append(s.charAt(1))
?,ans
?變為?"ni"
?。 - 當?
i = 2
?時,執行?ans.append(s.charAt(2))
?,ans
?變為?"nic"
?。 - 當?
i = 3
?時,執行?ans.append(s.charAt(3))
?,ans
?變為?"nice"
?。 - 當?
i = 4
?時,j = 0
?,spaces[0] = 4
?,滿足?j < spaces.length && spaces[j] == i
?,先執行?ans.append(' ')
?,此時?ans
?為?"nice "
?,然后?j++
?,j
?變為?1
?,再執行?ans.append(s.charAt(4))
?,ans
?變為?"nice t"
?。 - 當?
i = 5
?時,不滿足?spaces[j] == i
?(此時?spaces[1] = 6
?),執行?ans.append(s.charAt(5))
?,ans
?變為?"nice to"
?。 - 當?
i = 6
?時,滿足?j < spaces.length && spaces[j] == i
?(此時?j = 1
?,spaces[1] = 6
?),先執行?ans.append(' ')
?,ans
?變為?"nice to "
?,然后?j++
?,j
?變為?2
?,再執行?ans.append(s.charAt(6))
?,ans
?變為?"nice to m"
?。 - 后續以此類推,繼續遍歷字符串?
s
?,當?i = 10
?時,滿足條件,添加空格。