题目描述
请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
思路:
首先需要统计一下数组的长度以及空格数
这样的话,可以从数组的后面进行前推
第一个指针指向数组的初始结尾处,第二个指针指向新数组(空格替换为%20)的结尾处
当第一个指针指向空格时,第一个指针向前推三个分别为0,2,%
这样可以最大程度上减少移动次数啦。
class Solution {
public:
void replaceSpace(char *str,int length) {
int originnum = 0;
int num = 0;
int i = 0;
//首先需要统计空格数量
while(str[i] !='\0')
{
originnum++;
if(str[i] == ' '){
num++;
}
i++;
}
//替换后的新长度
int newnum = originnum + num * 2;
//只需要将空格地方替换,空位已经空出,不用移动
while(originnum >= 0 && newnum > originnum){
if(str[originnum] == ' '){
str[newnum--] = '0';
str[newnum--] = '2';
str[newnum--] = '%';
}
else{
str[newnum--] = str[originnum];
}
originnum--;
}
}
};

本文介绍了一种高效的字符串处理算法,用于将字符串中的空格替换成“%20”。通过统计空格数量并从字符串尾部开始替换,避免了大量元素的移动,实现了算法效率的提升。
1659

被折叠的 条评论
为什么被折叠?



