美文网首页
5.代替空格

5.代替空格

作者: Hwyoung | 来源:发表于2018-08-28 10:59 被阅读3次

    题目

    将一个字符串中的空格替换成 "%20"。

    Input:
    "We Are Happy"
    
    Output:
    "We%20Are%20Happy"
    

    思路

    1.用stringbuilder的append方法 O(n)+O(n)
    2.在字符串尾部填充任意字符,使得字符串的长度等于替换之后的长度。因为一个空格要替换成三个字符(%20),因此当遍历到一个空格时,需要在尾部填充两个任意字符。
    时间O(n)+O(1)

    
    class ReplaceSpace {
    
        // O(n) O(n)
        public String replaceSpace(StringBuffer str) {
            if (str == null || str.length() < 1) {
                return null;
            }
            StringBuffer newstr = new StringBuffer();
            for (int i = 0; i < str.length(); i++) {
                if (str.charAt(i) == ' ') {
                    newstr.append("%20");
                } else {
                    newstr.append(str.charAt(i));
                }
            }
            return newstr.toString();
        }
    
        // O(N)+O(1)
        public String replaceSpace2(StringBuffer str) {
            // 遍历,遇到空格扩2
            int old = str.length();
            for (int i = 0; i < old; i++) {
                if (str.charAt(i) == ' ') {
                    str.append("  ");
                }
            }
            int p1 = old - 1;
            int p2 = str.length() - 1;
            while (p1 >= 0 && p1 < p2) {
                char c = str.charAt(p1--);
                if (c == ' ') {
                    str.setCharAt(p2--, '0');
                    str.setCharAt(p2--, '2');
                    str.setCharAt(p2--, '%');
                } else {
                    str.setCharAt(p2--, c);
                }
            }
            return str.toString();
    
        }
    }
    

    相关文章

      网友评论

          本文标题:5.代替空格

          本文链接:https://www.haomeiwen.com/subject/putiiftx.html