替换空格
知识点:字符串
题目链接
类似题目:
Leetcode笔记 43. 字符串相乘
Leetcode刷题笔记 387. 字符串中的第一个唯一字符
LeetCode刷题笔记 557.反转字符串中的单词 III
Leetcode刷题笔记 剑指 Offer 20. 表示数值的字符串
题目描述
请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
解题思路
- 把char* 类型转换为string 遍历如果是空格加上 %20 否则加上原来的 在把string变为char* 拷贝回去
- 首先找到总共有几个空格 就可以确定最后一个下标在哪里 逆序填入
代码
class Solution {
public:
void replaceSpace(char *str,int length) {
string res,s = str;
for (char x : s) {
if (x == ' ')
res += "%20";
else
res += x;
}
strcpy(str,res.c_str());
}
};
class Solution {
public:
void replaceSpace(char *str,int length) {
if(str == nullptr)
return ;
int cnt_0 = 0;
for(int i = 0; i < length; i++)
if(str[i] == ' ')
cnt_0++;
if(cnt_0 == 0) return ;
int new_length = length + cnt_0 * 2;
for(int i = length; i >= 0; i--){
if(str[i] == ' '){
str[new_length--] = '0';
str[new_length--] = '2';
str[new_length--] = '%';
}else
str[new_length--] = str[i];
}
}
};
int main()
{
char *str = "We Are Happy.";
int length = 0;
while(str[length] !='\0')
length++;
Solution s;
s.replaceSpace(str,length);
cout<<str<<endl;
}