题目
时间限制:1秒 空间限制:32768K 热度指数:1115312
本题知识点: 字符串
题目描述
请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
我的思路
- 我的思路是建立一个新的字符串,将旧的字符串数组数据一一放入新的数组遇到空格就替换为
%20
- 先确定字符串中有多少空格记为z
- 新字符串数组长度
nlength = length + 2*z
; - 从头到尾依次将旧字符串数组的数据放入新的字符串直到遇到空格将
%20
依次放入 - 将新的字符串数组直接拷贝到旧的字符串数组中
附上我的代码
class Solution {
public:
void replaceSpace(char *str,int length) {
if(length<=0) return;
int z=0;//记录字符串中空格的数量用
for(int i=0;i<length;i++)
{
if(str[i]==' ') z++;//确定字符串中空格数量
}
int nlength = length+2*z;//确定新的字符串长度为旧的字符串+2倍的空格数
char a[nlength];
for(int i=0,j=0;i<length;i++)//从前往后将原字符串数据放入新字符串
{
if(str[i]==' ')//遇到空格将不放入,放入% 2 0
{
a[j++]='%';
a[j++]='2';
a[j++]='0';
}
else
{
a[j++]=str[i];
}
}
strcpy(str, a);//将新的字符串直接拷贝到旧的字符串之中
}
};