题目描述

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

public class Solution {
    public String replaceSpace(StringBuffer str) {
             int oldLength = str.length();
             int newLength = (addLength(str)*2) + oldLength;
             //在原大小上扩容2*空格数
             str.setLength(newLength);
             for(int i=oldLength-1, j=newLength-1; i >= 0; i--, j--){
                 if(str.charAt(i)==' '){
                     str.setCharAt(j-2, '%');
                     str.setCharAt(j-1,'2');
                     str.setCharAt(j, '0');
                     j=j-2;
                 }else{
                     str.setCharAt(j, str.charAt(i));
                 }
             }
            return str.toString();
        }
     private int addLength(StringBuffer str){
         int countSpace = 0;
         for(int i=0; i < str.length(); i++){
             if(str.charAt(i)==' '){
                 countSpace++;
             }
         }
         return countSpace;
  }
}

ps:

  1.   StringBuffer 扩容 str.setLength(扩容大小)
  2.  从后往前替换,时间复杂度为O(n);
posted on 2019-08-21 18:45  vow007  阅读(4)  评论(0编辑  收藏  举报  来源