https://blog.csdn.net/y912423222/article/details/87921420
No.2:替换空格
请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
关键点为使用两个指针,从后向前遍历避免高时间复杂度。当两个指针碰面的时候即为结束的时候。
C++实现:
class Solution {
public:
void replaceSpace(char *str,int length) {
if (str == NULL)
return;
int originalLength = 0;
int numberOfBlack = 0;
int i = 0;
//遍历一遍字符串计算字符串长度与其中的空格个数
while (str[i] != '\0')
{
++originalLength;
if (str[i] == ' ')
++numberOfBlack;
++i;
}
// 计算出新字符串的总长度
int newLength = originalLength + numberOfBlack * 2;
//定义两个指针指向字符串的末尾
int indexOfOriginal = originalLength;
int indexOfNewlength = newLength;
while (indexOfOriginal >= 0 && indexOfNewlength > indexOfOriginal)
{
if (str[indexOfOriginal] == ' ')
{
str[indexOfNewlength--] = '0';
str[indexOfNewlength--] = '2';
str[indexOfNewlength--] = '%';
}
else
{
str[indexOfNewlength--] = str[indexOfOriginal];
}
indexOfOriginal--;
}
}
};
Python实现
# -*- coding:utf-8 -*-
class Solution:
# s 源字符串
def replaceSpace(self, s):
# write code here
return s.replace(' ', '%20')