1.题目:
请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy
2.解题思路:
先计算出空格个数count,构建一个长度为原数组长度+count*2(‘%’,‘2’,‘0’占3个长度,空格原本占一个长度,所以这里乘2)的新数组,将原数组逆序输出,每输出一个判断其是否为空格(ASCLL码对应32):
- 不是空格直接填充进新数组。每插入一个新的值数组下标减1.
- 是空格则依次将‘0‘’,‘2’,‘%’,逆序插入进新数组,每插入一个新的值数组下标减1.
3.代码实现
public class Solution {
public String replaceSpace(StringBuffer str) {
int count=0;
String s= str.toString();
char [] arr=s.toCharArray();
for (int i=0;i<arr.length;i++){
//空格的ASCLL码值为32
if(arr[i]==32){
count++;
}
}
//开辟新数组,长度为原数组+count*3
char[] newarr=new char[arr.length+count*2];
int index=newarr.length-1;
//原数组里的元素,倒序输出,进行替换
for(int i=arr.length-1;i>=0;i--){
if(arr[i]==32){
newarr[index]='0';
index--;
newarr[index]='2';
index--;
newarr[index]='%';
index--;
}else{
newarr[index]=arr[i];
index--;
}
}
return new String(newarr);
}
public static void main(String[] args) {
Solution solution=new Solution();
String ss=solution.replaceSpace(new StringBuffer("We Are Happy"));
System.out.println(ss);
}
}