【剑指5】替换空格

题目:

请实现一个函数,把字符串中的每个空格替换成“%20”。例如输入“We are happy”,则输出”We%20are%20happy”

时间复杂度为O(n)的解法

将目标字符串从末尾开始替换,首先准备两个指针,P1和P2。 P1指向原始字符串的末尾,而P2指向替换之后的字符串的末尾


image.png
public class Solution1 {
    public static void main(String[] args) {

        String s = "we are happy";
        System.out.println(replaceSpace(s));
    }

    public static String replaceSpace(String inputStr) {
        if (inputStr == null || inputStr.length() == 0) {
            return inputStr;
        }
        StringBuffer sb = new StringBuffer();
        for (int i = 0; i < inputStr.length(); i++) {
            if (inputStr.charAt(i) == ' ') {
                sb.append("%20");
            } else {
                sb.append(inputStr.charAt(i));
            }
        }
        return sb.toString();
    }
}
public class Solution2 {
    public static void main(String[] args) {

        String s = "we are happy";
        System.out.println(replaceSpace(s));


    }

    public static String replaceSpace(String inputStr) {
        if (inputStr == null || inputStr.length() == 0) {
            return inputStr;
        }
        int length = inputStr.length();
        char[] oldArray = inputStr.toCharArray();
        //假设字符数组足够大
        char[] newArray = new char[100];
        //统计空格数
        int count = 0;
        for (int i = 0; i < length; i++) {
            newArray[i] = oldArray[i];
            if (oldArray[i] == ' ') {
                count++;
            }
        }

        if (count == 0) {
            return inputStr;
        }

        int newLength = length + 2 * count;
        int head = length - 1;
        int tail = newLength - 1;
        while (head < tail) {
            if (newArray[head] == ' ') {
                newArray[tail] = '0';
                newArray[--tail] = '2';
                newArray[--tail] = '%';

            } else {
                newArray[tail] = newArray[head];
            }

            head--;
            tail--;
        }
        return new String(newArray);

    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 题目 请实现一个函数,把字符串中的每个空格都换成%20。例如:输入"We are happy",则输出“We%20...
    Longshihua阅读 644评论 0 1
  • 前言 2. 实现 Singleton 3. 数组中重复的数字 4. 二维数组中的查找 5. 替换空格 6. 从尾到...
    Observer_____阅读 3,008评论 0 1
  • 题目05:替换空格 请实现一个函数,把字符串中的每个空格替换成"%20" 原因:在网络编程中,如果URL参数中含有...
    stoneyang94阅读 353评论 0 0
  • 题目描述 请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替...
    云胡同学阅读 412评论 0 0
  • 千年的黄历早已记下你的名字 带着走远的故事,新的一天尘埃落定 时间言而有信,只是渐行渐远 青丝变成白发,故人只有模...
    唐春元ok阅读 279评论 10 11