剑指Offer P51 面试题5:请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
书中的给的C/C++思路是从后往前复制:先找出有多少个空格,建立对应长度的字符串,再从后往前开始复制,遇到空格就换
根据Java语言特性,我们第一个方法是直接利用replace方法:
public class Solution
{
public String replaceSpace(StringBuffer str)
{
if (str.equals(""))
return "";
String str1 = new String(str);
String str2 = str1.replace(" ", "%20");
return str2;
}
}
但是这样可能效率低一点,我们也可以运用StringBuilder的append方法,从前往后复制:
public class Solution
{
public String replaceSpace(StringBuffer str)
{
if (str == null)
return null;
StringBuilder str1 = new StringBuilder();
for (int i = 0; i < str.length(); i++)
{
if (str.charAt(i) == ' ')
{
str1.append("%20");
}
else
str1.append(str.charAt(i));
}
return str1.toString();
}
}