原创

【每日一题】【剑指offer】02-替换空格

题目描述

请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。

示例1

输入

"We Are Happy"

返回值

"We%20Are%20Happy"

解题思路

首先我们日常中对于这种替换空格,一般String类里会提供这些工具类,如replaceAll方法。但是如果我们自己写的话首先考虑一下边界的情况,如果全为空,输入三个空格,输出%20%20%20,很明显,字符串长度为原来的三倍,此时我们新字符串要不然使用char[]或者使用String来构造,使用String来构造会产生多余的对象,如果使用char[]的话,则最大要申请之前char[]数组的三倍空间,申请完空间,我们就可以对旧数组进行遍历,然后做字符的替换了,如果遇到空格,我们就将数组依次替换为%、2、0,并把数组角标往后移动。

代码

public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param s string字符串 
     * @return string字符串
     */
    public String replaceSpace (String s) {
        // write code here
       int length = s.length();
       char[] c =  new char[length * 3];
       int c_index = 0;
        for(int i=0; i < s.length(); i++){
           if (s.charAt(i) == ' '){
               c[c_index++] = '%';
                c[c_index++] = '2';
                c[c_index++] = '0';

           }else{
              c[c_index++] = s.charAt(i);
           }
        }
        return new String (c,0,c_index);
    }
}
正文到此结束