前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >剑指Offer__5__替换空格

剑指Offer__5__替换空格

作者头像
用户6055494
发布2019-08-20 15:10:41
2390
发布2019-08-20 15:10:41
举报
文章被收录于专栏:AVAJ

题目:空格替换

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

方法一:简单的进行替换 用StringBuffer的append方法,当遇到空格,那就直接append上%20,这样就可以完成替换啦。

方法二:遍历输入的字符串,每遍历到空格,便将长度+2,因为每一个空格替换成%20长度是增加2的,然后得到新的长度,也就是替换之后的总长度。再弄俩"指针",然后对字符串进行扩容,一个指针a指向原长度末尾的位置,另一个指针b指向新长度末尾的位置,然后a指针指向的地方如果不是空格,那么b指针处直接复制a指针的值,a指针如果遇到空格,a往前移动一格,b处写入"%20"

方法一

代码语言:javascript
复制
    public static String replace(String str) {
        if (str == null || str.length() <= 0) {
            return null;
        }
        StringBuffer sb = new StringBuffer();
        for (int i = 0; i < str.length(); i++ ) {
            if (str.charAt(i) == ' ' ) {
                sb.append("%20");
            } else {
                sb.append(str.charAt(i));
            }
        }
        return sb.toString();
    }

方法二

代码语言:javascript
复制
    public static String replaceTwo(StringBuffer str) {
        if (str == null || str.length() <= 0) {
            return null;
        }
        int count = 0;
        for (int i = 0; i < str.length(); i++) {
            if (str.charAt(i) == ' ') {
                count += 2;
            }
        }
        int oldLength = str.length() - 1;
        // 扩容
        str.setLength(str.length() + count);
        int newLength = str.length() - 1;
        while(newLength > oldLength) {
            if (str.charAt(oldLength) != ' ') {
                str.setCharAt(newLength--,str.charAt(oldLength));
            } else {
                str.setCharAt(newLength--, '0');
                str.setCharAt(newLength--, '2');
                str.setCharAt(newLength--, '%');
            }
            oldLength--;
        }
        return str.toString();
    }

总结:主要考察思维能力,往往很容易想到的方法大多都不是最优解。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-08-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员面试鸭 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档