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;
}