题目描述
请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
解法一:replace函数,JAVA
用java自带的replace函数,即可方便替换目标字符串
public class Solution {
public String replaceSpace(StringBuffer str) {
return str.toString().replace(" ","%20");
}
}
函数原型:replace(CharSequence target, CharSequence replacement) 用replacement替换掉target。这两个参数都是字符串
实例:
public class TryDotRegEx{
public static void main(String args[]){
String ss="aaabbbbccaadd";
ss=ss.replace("aa","00");
System.out.println(ss);
}
}
输出:00abbbbcc00dd
解法二:从尾部遍历,JAVA
思路:先遍历一次字符数组,计算出空格的数量,然后再重新设置数组长度,再从后向前遍历数组并将数组数据后移,遇到空格则做出需要的改变
public class Solution {
public String replaceSpace(StringBuffer str) {
int cnt=0;
for(int i=0;i<str.length();i++)
if(str.charAt(i)==' ')
cnt++;
int oldLength=str.length();//旧长度
int oldIndex=oldLength-1;//指向旧数组最后一个字符的位置
int newLength=oldLength+cnt*2;//新长度
str.setLength(newLength);
int newIndex=newLength-1;//指向新数组最后一个字符的位置
//旧长度小于新长度,oldIndex从数组尾向前依次遍历
for(;oldIndex>=0&&oldLength<newLength;oldIndex--)
{
if(str.charAt(oldIndex)!=' ')
str.setCharAt(newIndex--,str.charAt(oldIndex));//后移
else{
str.setCharAt(newIndex--,'0');//替换
str.setCharAt(newIndex--,'2');
str.setCharAt(newIndex--,'%');
}
}
return str.toString();
}
}