替换空格

思路

方法一:暴力解法(从头扫描)

从头到位开始扫描字符串,找到空格便用%20替换,这样做的缺陷是每次替换空格都需要移动空格后面所有的字符串,导致复杂度为O(n^2)

Paste_Image.png

方法一:从尾部扫描(O(n))

首先需要计算新字符串的长度为2*空格+原始长度,需要两个指针old和new 起始分别指向原始字符串和新字符串的尾部,从后往前扫描,每次old和new都往前走一步,并把old指向的字符赋值给new,如果old碰到空格,则在new前面依次插入"%,2,0"这三个字符,直到old=new为止。

Paste_Image.png
public String replaceSpace(String str){
          char[] ch=str.toCharArray();
          int spaceCount=0;
         for(int i=0;i<ch.length;i++){
                 if(ch[i]==' ')
                     spaceCount++;
         }
         char[] ch1=new char[spaceCount*2+str.length()];
         int newIndex=ch1.length-1;
         int len=ch.length-1;
         for(int i=len;i>=0;i--){
               if(ch[i]=='  '){
                   ch1[newIndex--]='0';
                   ch1[newIndex--]='2';
                   ch1[newIndex--]='%';
               }else{
                  ch1[newIndex--]=ch[i];
               }
        }
       return String.valueOf(ch1);
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 题目描述 请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替...
    哦漏昵称已被占用阅读 336评论 0 0
  • 题目描述 请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替...
    云胡同学阅读 412评论 0 0
  • 题目:请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之...
    薛皓哲阅读 260评论 0 0
  • 题目描述请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换...
    vaneL阅读 310评论 0 0
  • 要求 将字符串中的字符A替换B,假定B比A长,而且字符串具有足够的空间。 如果从头向尾部替换,那么会造成后面的字符...
    Myth52125阅读 263评论 0 0