算法题动手编程,记录学习过程,解题思路
题目
时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M 热度指数:1603363
本题知识点: 字符串
请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
解题思路
先扩容,即定义一个新字符串数组,两个指针,分别指向两个字符串数组的末尾,然后向前推,遇到空格就替换
实现代码
class Solution {
public:
void replaceSpace(char *str,int length) {
int count = 0;
int l = strlen(str);//不包括‘\0’的长度
for(int i=0; i<l; i++)
{
if(str[i] == ' ')
count++;
}
int l_add = l + count*2 ;
while(count>0)
{
if(str[l]!=' ')
{
str[l_add] = str[l];
l_add--;
l--;
}
else
{
str[l_add] = '0';
l_add--;
str[l_add] = '2';
l_add--;
str[l_add] = '%';
l_add--;
l--;
count--;
//或者
//str[l_add] = '0';
//str[--l_add] = '2';
//str[--l_add] = '%';
//l_add--;
//l--;
//count--;
}
}
}
};
运行时间:3ms
占用内存:376k
易错分析
int l = strlen(str);//不包括‘\0’的长度
还有理解- -l_add