题目描述
请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
思路: 先计算出空格数,即可知道新的字符串的长度。然后设计两个指针,一个指向原字符串长度尾,一个指向新的长度尾,非空格时则复制,遇到空格时则赋值“%20”,直到遍历完。
C++
class Solution {
public:
void replaceSpace(char *str,int length) {
if (length == 0) return;
int count = 0; //记录空格的数量
for(int i = 0; i < length; i++)
{
if (str[i] == ' ')
count++;
}
int newlen = count * 2 + length; //新的字符串的长度
int fir = length - 1; //指针指向原字符串尾
int sec = newlen - 1; //指针指向新字符串尾
while (fir >= 0)
{
if (str[fir] != ' ')
str[sec] = str[fir];
else
{
str[sec--] = '0';
str[sec--] = '2';
str[sec] = '%';
}
fir--;
sec--;
}
}
};
Python 可同样按照C++的代码写,但这里可以直接用replace,提供简单的方法(面试用你就完了)
# -*- coding:utf-8 -*-
class Solution:
# s 源字符串
def replaceSpace(self, s):
# write code here
return s.replace(" ", "%20")