剑指offer - 替换空格

题目描述:

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

code:

1. 实现原理:

public class Solution {
    public String replaceSpace(StringBuffer str) {
        //如果字符串为null或空串,返回空
        if (null == str || 0 == str.length()) {
            return "";
        }
        //定义' '个数为0
        int count = 0;
        //遍历字符串
        for (int i = 0; i < str.length(); i++) {
            if (' ' == str.charAt(i)) {
                //如果字符为' ',计数+1
                count++;
            }
        }
        //计算新数组长度
        int len = str.length() + count * 2;
        //定义char数组
        char[] chars = new char[len];
        //倒叙遍历字符串
        for (int i = str.length() - 1; i >= 0; i--) {
            if (' ' == str.charAt(i)) {
                //如果为' ',数组倒叙一次添加0 2 %
                chars[--len] = '0';
                chars[--len] = '2';
                chars[--len] = '%';
            } else {
                //不是' ',复制
                chars[--len] = str.charAt(i);
            }
        }
        //返回新字符串
        return new String(chars);
    }
}

2. 使用java中方法:

public class Solution {
    public String replaceSpace(StringBuffer str) {
        //如果字符串为null或空串,返回空
        if (null == str || 0 == str.length()) {
            return "";
        }
        //转为字符串,使用replaceAll()方法
        return str.toString().replaceAll(" ", "%20");
    }
}

 

posted @ 2020-03-12 21:12  芝諾de乌龟  阅读(121)  评论(0)    收藏  举报