题目描述
请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
解法1;
C++版,先统计有多少个空格,然后就知道替换后的长度为length+2*空格数,
然后从字符串的右边往左边写入数据。
class Solution {
public:
void replaceSpace(char *str,int length) {
if(str==NULL)return;
int cnt=0;
for(int i=0;i<length;i++){
if(str[i]==' ')cnt++;
}
int pos1=length,pos2=length+2*cnt;
while(pos1<pos2){
if(str[pos1]==' '){
str[pos2--]='0';
str[pos2--]='2';
str[pos2--]='%';
}else{
str[pos2--]=str[pos1];
}
pos1--;
}
}
};
解法2:
JAVA版,用StringBuffer .replace()方法实现。
public class Solution {
public String replaceSpace(StringBuffer str) {
if(str==null)return null;
for (int i = 0; i < str.length(); i++) {
if(str.charAt(i) == ' '){
str.replace(i,i+1,"%20");
}
}
return str.toString();
}
}
解法3:
JAVA版,用StringBuffer .append方法实现。
public class Solution {
public String replaceSpace(StringBuffer str) {
if(str==null)return null;
StringBuffer sb = new StringBuffer();
for (int i = 0; i < str.length(); i++) {
if(str.charAt(i) == ' '){
sb.append("%20");
}else{
sb.append(str.charAt(i));
}
}
return sb.toString();
}
}