📜  门|门CS 2008 |第 85 题(1)

📅  最后修改于: 2023-12-03 14:58:36.848000             🧑  作者: Mango

题目介绍

本题为门|门CS 2008年的第85题,题目类型为字符串操作。

本题要求实现将一个字符串中所有空格替换为"%20",并返回替换后的新字符串。

输入输出格式

输入格式:

  • 一个字符串,长度不超过1000。

输出格式:

  • 将输入的字符串中所有的空格替换为"%20"后得到的新字符串。

示例

输入:

We are family.

输出:

We%20are%20family.

解题思路

字符串操作题,考察对字符串的基本操作能力。可以使用以下思路:

  1. 遍历字符串,确定空格的数量;
  2. 新建一个字符数组,并根据空格数量计算出新数组的长度;
  3. 从字符串末尾开始复制字符,遇到空格则替换为"%20",直到复制完新字符数组。

时间复杂度为 $O(n)$。

代码实现

以下为Python代码实现:

def replaceSpace(s: str) -> str:
    # 统计字符串中的空格数量
    count = 0
    for i in s:
        if i == " ":
            count += 1

    # 新建字符数组
    new_s = [None] * (len(s) + 2 * count)

    # 复制字符串中的字符
    index = len(new_s) - 1
    for i in range(len(s) - 1, -1, -1):
        if s[i] == " ":
            new_s[index] = "0"
            new_s[index-1] = "2"
            new_s[index-2] = "%"
            index -= 3
        else:
            new_s[index] = s[i]
            index -= 1

    # 转化为字符串
    return "".join(new_s)