【编程题】替换空格(Java实现)
题目来源
题目描述
请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
题目解答
方法一,分配空间
思路
分配一个StringBuilder的空间,每次遇到空格则将%20添加进去,否则添加当前元素。
代码
public class Solution {
public String replaceSpace(StringBuffer str) {
if(str==null||str.length()<=0)
return str.toString();
StringBuilder printStr=new StringBuilder();
for(int i=0,len=str.length();i<len;i++){
if(str.charAt(i)==' ')
printStr.append("%20");
else
printStr.append(str.charAt(i));
}
return printStr.toString();
}
}
方法二,在元数组上操作
思路,将原数组进行遍历,计算空格的个数,再将数组扩容,从后往前添加元素和%20;
代码
public class Solution {
public String replaceSpace(StringBuffer str) {
if(str==null||str.length()<=0)
return str.toString();
int count=0;
for(int i=0,len=str.length();i<len;i++){
if(str.charAt(i)==' ')
count++;
}
int newLength=str.length()+2*count;
int oldLength=str.length()-1;
str.setLength(newLength);
for(;oldLength>=0;oldLength--){
if(str.charAt(oldLength)==' '){
str.setCharAt(--newLength,'0');
str.setCharAt(--newLength,'2');
str.setCharAt(--newLength,'%');
}else
{
str.setCharAt(--newLength,str.charAt(oldLength));
}
}
return str.toString();
}
}