替换空格

来源:互联网 发布:对人工智能的看法400字 编辑:程序博客网 时间:2024/06/05 17:01

题目

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

思路

  • 从前往后替换:从前向后遍历,当插入新字符时,当前位置后面的字符全部需要移动位置,时间复杂度为O(n2)
  • 从后向前替换:从后向前遍历,查找空格个数,可计算出新的字符串所占内存空间,申请足够容量的内存空间,进行复制替换,时间复杂度为O(n)

解答

public static String replaceSpace(StringBuffer str){    //原始字符串长度    int length=str.length();    int count=0;    if(length<1)        return "";    //计算空格个数    for(int i=0;i<length;i++){        if(str.charAt(i)==' ')            count++;    }    //新的字符串长度    int newlength=length+2*count;    str.setLength(newlength);    while(count>0 && length>=1){        if(str.charAt(--length)==' '){            str.setCharAt(--newlength,'0');            str.setCharAt(--newlength,'2');            str.setCharAt(--newlength,'%');            count--;        }        else            str.setCharAt(--newlength,str.charAt(length));    }    return str.toString();}

考察点

  • 不创建新的字符串内存空间
  • 时间复杂度
0 0