跳到主要内容

1592.重新排列单词间的空格

链接:1592.重新排列单词间的空格
难度:Easy
标签:字符串
简介:返回 重新排列空格后的字符串 。

题解 1 - c

  • 编辑时间:2022-09-07
  • 内存消耗:5.4MB
  • 编程语言:c
  • 解法介绍:重组。
char * reorderSpaces(char * text){
int len = strlen(text), list_len = 0, blank_cnt = 0;
char *list[100] = {0}, *ans = (char *)calloc(len + 1, sizeof(char));
for (int i = 0; i < len; i++) {
if (text[i] == ' ') blank_cnt++;
else {
list[list_len++] = text + i;
while (i + 1< len && text[i + 1] != ' ') i++;
}
}
int blank_common_cnt = list_len > 1 ? blank_cnt / (list_len - 1) : 0,
blank_last_cnt = list_len > 1 ? blank_cnt % (list_len - 1) : blank_cnt,
ans_len = 0;
for (int i = 0; i < list_len; i++) {
for (char *j = list[i]; *j != ' ' && *j != '\0'; j++) ans[ans_len++] = *j;
if (i == list_len - 1) for (int i = 0; i < blank_last_cnt; i++) ans[ans_len++] = ' ';
else for (int i = 0; i < blank_common_cnt; i++) ans[ans_len++] = ' ';
}
return ans;
}