题目描述
请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
解题思路
字符串中定义两个新老索引下标,设置字符串里新的大小防止越界。
首先判断老索引位置上的元素是不是空格,是空格的话对新索引位置进行操作,不是空格的话,再对新索引的位置进行另外的操作。
解题代码
import java.util.*;
public class Solution {
public String replaceSpace(StringBuffer str) {
//先统计原来字符串中空格的个数
int count = 0;
for(int i = 0;i < str.length();i++){
if(str.charAt(i) == ' '){
count++;
}
}
//表示新字符串的长度
int new_length = str.length() + 2*count;
//老字符串的最后一个位置下标
int old_end = str.length()-1;
//新字符串的最后一个位置下标
int new_end = new_length - 1;
//设置字符串里新的大小防止越界
str.setLength(new_length);
while(old_end >=0&&new_end >=0){//新旧字符串这两个索引要满足>=0
//开始移动索引位置,往新索引位置set值
if(str.charAt(old_end)==' '){//如果老索引的位置上的元素是空格的情况下对新索引位置进行set值
str.setCharAt(new_end--,'0');
str.setCharAt(new_end--,'2');
str.setCharAt(new_end--,'%');
old_end--;
} else{//如果当前位置不是空格的话,就正常的对应把老索引位置上的元素放到新索引位置上
str.setCharAt(new_end--,str.charAt(old_end));
old_end--;
}
}
return str.toString();//将StringBuffer类型转换为String类型
}
}