题目:向字符串添加空格字符串长度算不算空格
给你一个下标从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中的所有值严格递增
语言:C++
class Solution {
public:
string addSpaces(string s, vector<int>& spaces) {
int n = s.size();
string ans;
int ptr = 0;
for (int i = 0; i < n; ++i) {
if (ptr < spaces.size() && spaces[ptr] == i) {
ans.push_back(' ');
++ptr;
}
ans.push_back(s[i]);
}
return ans;
}
};
语言:Python
class Solution:
def addSpaces(self, s: str, spaces: List[int]) -> str:
ans = list()
ptr =0
for i, ch in enumerate(s):
if ptr < len(spaces) and spaces[ptr] == i:
ans.append(" ")
ptr +=1
ans.append(ch)
return"".join(ans)
语言:go
func addSpaces(s string, spaces []int) string {
spaces = append(spaces, len(s)) // 小技巧:把 s 长度加到数组末尾,这样可以在循环内处理最后一段
ans := []byte(s[:spaces[0]])
for i := 1; i < len(spaces); i++ {
ans = append(ans, ' ')
ans = append(ans, s[spaces[i-1]:spaces[i]]...)
}
return string(ans)
}
语言:go
func addSpaces(s string, spaces []int) string { var n int = len(s)
var sn int = len(spaces)
var res []byte = make([]byte, 0)
var si int = 0
var cnt int = -1
for i := 0; i < n; i ++ {
cnt ++
if si < sn && cnt == spaces[si] {
res = append(res, ' ')
si ++
}
res = append(res, s[i])
}
return string(res)
}
语言:javascript
/**
* @param{string} s
* @param{number[]} spaces
* @return {string}
*/
var addSpaces =function(s, spaces) {
let s1 =''
let m =0
for(let i=0;i<spaces.length;i++){
s1 += s.slice(m,spaces[i])
s1 +=" "
m = spaces[i]
}
s1 += s.slice(m,s.length)
return s1
};
语言:javascript
/**
* @param{string} s
* @param{number[]} spaces
* @return {string}
*/
let addSpaces = (s, spaces) => {
const newSpaces = []
let res =''
for (let i =0; i < spaces.length; i++) {
newSpaces[spaces[i]] =1
}
for (let i =0; i < s.length; i++) {
if(newSpaces[i]){
res +=" "
}
res+=s[i]
}
return res
};
语言:java
class Solution
{
public String addSpaces(String s, int[] spaces) {
int n = s.length();
int sn = spaces.length;
StringBuilder SB = new StringBuilder();
int si = 0;
int cnt = -1;
for (int i = 0; i < n; i ++)
{
cnt ++;
if (si < sn && cnt == spaces[si])
{
SB.append(' ');
si ++;
}
SB.append(s.charAt(i));
}
String();
}
}
语言:java
class Solution {
public static String addSpaces(String s, int[] spaces) {
StringBuilder stringBuilder = new StringBuilder();
int start = 0;
for (int space : spaces){
stringBuilder.append(s.substring(start,space));
//新增spaces.size()个空格!
stringBuilder.append(" ");
start = space;
}
//最后这一步不能忘记了!还要新增最后一个空格后的字符串! stringBuilder.append(s.substring(start));
String();
}
}
语言:java
```java
class Solution {
public String addSpaces(String s, int[] spaces) { StringBuilder res = new StringBuilder(s);
int count = 0;
for(int i : spaces) {
res.insert(i+count," ");
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论