思路:
我们先malloc一个数组-arr存放s的元素和空格,这个数组应该多大呢?
首先我们可以算出s数组的大小-len,也可以直接得到spaces的大小-即要添加的空格数,那么我们要创建的数组大小是len+spacesSize吗? 不是,应该是len+spacesSize+1,这里的加一是存放一个'\n'
这里呢 我们可以写一个for i循环,用来把s中的元素放到arr里面,然后在外面定义一个falg用来充当arr的下标,存进一个元素falg++,再定义一个j=0,当i == space[j]就存放空格,每存放一个空格++.
代码(力扣中用C语言写的):
char * addSpaces(char * s, int* spaces, int spacesSize){
int i = 0;
int j = 0;
int falg = 0;
int len = strlen(s);
char* arr = (char*)malloc((sizeof(char)) *(len + spacesSize + 1));
for(i = 0; i < len; i++)
{
if(j < spacesSize && i == spaces[j])
{
j++;
arr[falg++] = ' ';
}
arr[falg++] = s[i];
}
arr[falg] = '\0';
return arr;
}