请实现一个函数,把字符串 s 中的每个空格替换成"%20"。
示例 1: 输入:s = "We are happy."
输出:"We%20are%20happy."
首先扩充数组到每个空格替换成"%20"之后的大小。
然后从后向前替换空格,也就是双指针法:
i指向新长度的末尾,j指向旧长度的末尾。
- public class Kongge {
-
- public String replaceSpace(String s) {
- if(s == null || s.length() == 0){
- return s;
- }
- //扩充空间,空格数量2倍
- StringBuilder str = new StringBuilder();
- for (int i = 0; i < s.length(); i++) {
- if(s.charAt(i) == ' '){
- str.append(" ");
- }
- }
- //若是没有空格直接返回
- if(str.length() == 0){
- return s;
- }
- //有空格情况 定义两个指针
- int left = s.length() - 1;//左指针:指向原始字符串最后一个位置
- s += str.toString();
- int right = s.length()-1;//右指针:指向扩展字符串的最后一个位置
- char[] chars = s.toCharArray();
- while(left>=0){
- if(chars[left] == ' '){
- chars[right--] = '0';
- chars[right--] = '2';
- chars[right] = '%';
- }else{
- chars[right] = chars[left];
- }
- left--;
- right--;
- }
- return new String(chars);
- }
-
- public static void main(String[] args) {
- String s = "We are happy.";
- Kongge kongge = new Kongge();
- String res = kongge.replaceSpace(s);
- System.out.println(res);
-
- }
- }