替换空格-java

题目:

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

思路

遍历字符串,遇到空格即替换为%20

java程序

/*
问题1:替换字符串,是在原来的字符串上做替换,还是新开辟一个字符串做替换!
问题2:在当前字符串替换,怎么替换才更有效率(不考虑java里现有的replace方法)。
      从前往后替换,后面的字符要不断往后移动,要多次移动,所以效率低下
      从后往前,先计算需要多少空间,然后从后往前移动,则每个字符只为移动一次,这样效率更高一点。
*/
public class Solution {
    public String replaceSpace(StringBuffer str) {
        int spaceNum=0;//计算空格数目
        for(int i=0;i<str.length();i++){
            if(str.charAt(i)==' ')
                spaceNum++;
        }
        int indexOld=str.length()-1;//替换前str下标
        int newLength=str.length()+spaceNum*2;//计算把空格都替换为%20后的str长度
        int indexNew=newLength-1;//替换后str下标
        str.setLength(newLength);//防止下标越界,将str长度变更为替换后的长度
        for(;indexOld>=0&&indexOld<newLength;--indexOld){
            if(str.charAt(indexOld)==' '){
                str.setCharAt(indexNew--,'0');
                str.setCharAt(indexNew--,'2');
                str.setCharAt(indexNew--,'%');
            }else{
                str.setCharAt(indexNew--,str.charAt(indexOld));
            }
        }
        return str.toString();
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,785评论 18 399
  • 一. Java基础部分.................................................
    wy_sure阅读 3,845评论 0 11
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,032评论 19 139
  • 请实现一个函数,把字符串中的每个空格替换成"%20"。例如输入"We are happy.",则输出"We%20a...
    913c9536e19a阅读 619评论 0 0
  • 树芽萌发,不一定就会长成大树 梦想再大,不一定就能实现 凉凉夜色,微风凌凌 波波岚岚 空空荡荡,月牙弯弯 萋萋凌凌
    Air_752c阅读 228评论 0 0