题目描述
请实现一个函数,把字符串中的每个空格替换成”%20”。
数据范围
0≤ 输入字符串的长度 ≤1000。
注意输出字符串的长度可能大于 1000。
样例
输入:"We are happy."
输出:"We%20are%20happy."
思路一:简单替换,用库函数,或者手写;
时间复杂度 O(n)
参考文献
C++ 代码
class Solution {
public:
string replaceSpaces(string &str) {
string s;
for(int i=0;i<str.size();i++)
{
if(str[i]==' ')s+="%20";
else s+=str[i];
}
return s;
}
};
//调用库函数
string replaceSpaces(string &str) {
size_t t;
while((t=str.find(' '))!=string::npos){
str.replace(t,1,"%20");
}
return str;
}
java 代码
//直接递归就完事
class Solution {
public String replaceSpaces(StringBuffer str) {
int a=str.indexOf(" ");
if(a!=-1)replaceSpaces(str.replace(a,a+1,"%20"));
return str+"";
}
}
思路二:双指针
C++ 代码
class Solution {
public:
string replaceSpaces(string &str) {
int len=0;
for(auto i:str)
{
if(i==' ')
len+=3;
else len++;
}
int i=str.size()-1,j=len-1;
str.resize(len);
while(i>=0)
{
if(str[i]==' ')
{
str[j--]='0';
str[j--]='2';
str[j--]='%';
}
else str[j--]=str[i];
i--;
}
return str;
}
};
class Solution {
public:
string replaceSpaces(string &str) {
string s;
for(int i=0;i<str.size();i++)
{
int j=i;
while(j<str.size()&&str[j]!=' ')j++;
s+=str.substr(i,j-i);
if(j<str.size())s+="%20";
i=j;
}
return s;
}
};
欢迎留言点赞