码迷,mamicode.com
首页 > 其他好文 > 详细

替换空格

时间:2020-05-24 09:15:00      阅读:50      评论:0      收藏:0      [点我收藏+]

标签:ace   har   pen   原理   题目   tostring   strong   win   空格   

题目描述

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

方法一:

public String replaceSpace(StringBuffer str) {
                for (int i = 0; i < str.length(); i++) {
            if (str.charAt(i) == ‘ ‘) {
                str = str.replace(i,i,"%20");
            }
        }
        return str.toString();
}

这种方法是调用自身函数,用起来也很简单。

方法二:

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();
    }

这种方法是创建一个新的StringBuffer对象,原理也是调用其自身函数,和方法一类似。

方法三:

public String replaceSpace(StringBuffer str) {
        int len = str.length();//原字符串的长度
        int index = len - 1;
        int sum = 0;//统计需要扩容的长度
        for (int i = 0; i < str.length(); i++) {
            if (str.charAt(i) == ‘ ‘) {
                sum++;
            }
        }
        int newLen = str.length() + sum * 2;//新字符串的总长
        int newIndex = newLen - 1;
        str.setLength(newLen);//将原字符串的长度更改为新的长度
        while (newIndex > index){
            if (str.charAt(index) == ‘ ‘) {        
                str.setCharAt(newIndex--, ‘0‘);//如果是从前往后插入字符,那么空格后面的每个字符都要往后挪,所以我们选择从后往前插入
                str.setCharAt(newIndex--, ‘2‘);
                str.setCharAt(newIndex--, ‘%‘);
            } else {
                str.setCharAt(newIndex--,str.charAt(index));
            }
            index--;
        }
        return str.toString();
}

这种方法是在原字符串上进行扩容,将替换的字符再插入进去,这种方法相对前两种来说更好一些。

替换空格

标签:ace   har   pen   原理   题目   tostring   strong   win   空格   

原文地址:https://blog.51cto.com/14298563/2497776

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!