首页 > 试题广场 >

字符串的调整II

[编程题]字符串的调整II
  • 热度指数:1467 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
给定一个字符类型的数组chas[],chas右半区全是空字符,左半区不含有空字符。现在想将左半区的空格字符串替换成“%20”,假设chas右半区足够大,可以满足替换需要的空间,请完成替换函数。

输入描述:
输出一行,代表chas的左半区 。


输出描述:
输出一行,代表替换后的字符串。
示例1

输入

a  b    c

输出

a%20%20b%20%20%20%20c

备注:
时间复杂度,额外空间复杂度
#include <stdio.h>
#include <string.h>

#define MAXLEN 300001

int main(void) {
    char str[MAXLEN];
    int len = 0, spaceNum = 0;
    fgets(str, MAXLEN, stdin);
    str[strlen(str) - 1] = '\0';  /* 将换行符替换为NULL */
    while (str[len] != '\0') {
        if (str[len++] == ' ') {
            spaceNum++;
        }
    }
    int index = len + (spaceNum << 1) - 1;
    for (int i = len - 1; i >= 0; i--) {
        if (str[i] == ' ') {
            str[index--] = '0';
            str[index--] = '2';
            str[index--] = '%';
        } else {
            str[index--] = str[i];
        }
    }
    puts(str);
    return 0;
}

发表于 2022-02-06 19:06:54 回复(0)

问题信息

上传者:小小
难度:
1条回答 3946浏览

热门推荐

通过挑战的用户

查看代码