diff options
Diffstat (limited to 'add_space_string.c')
-rw-r--r-- | add_space_string.c | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/add_space_string.c b/add_space_string.c new file mode 100644 index 0000000..3d6bf04 --- /dev/null +++ b/add_space_string.c @@ -0,0 +1,39 @@ +// 2109. Adding Spaces to a String +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +/* + * given a 0-indexed string 's' and a 0-indexed integer array 'spaces' that + * describes the indices in the original string where spaces will be added. each + * space should be inserted before the character at the given index. return the + * modified string after the spaces have been added + */ + +char *addSpaces(char *s, int *spaces, int spaces_size) { + int n = strlen(s), m = n + 1 + spaces_size; + char *ans = malloc(m * sizeof(char)); + ans[m - 1] = '\0'; + int aidx = 0, bidx = 0; + int *num = malloc(spaces_size * sizeof(int)); + num[0] = spaces[0]; + for (int i = 1; i < spaces_size; i++) + num[i] = spaces[i] - spaces[i - 1]; + for (int i = 0; i < spaces_size; i++) { + strncpy(&ans[aidx], &s[bidx], num[i]); + aidx += num[i]; + bidx += num[i]; + ans[aidx] = ' '; + aidx++; + } + strncpy(&ans[aidx], &s[bidx], m - aidx); + free(num); + return ans; +} + +int main() { + char s1[] = {"LeetcodeHelpsMeLearn"}, s2[] = {"icodeinpython"}; + int n1[] = {8, 13, 15}, n2[] = {1, 5, 7, 9}; + printf("%s\n", addSpaces(s1, n1, 3)); // expect: Leetcode Helps Me Learn + printf("%s\n", addSpaces(s2, n2, 4)); // expect: i code in py thon +} |