【面试题4】替换空格

来源:互联网 发布:淘宝助理批量修改价格 编辑:程序博客网 时间:2024/06/16 03:17

题目:请实现一个函数,把字符串中的每个空格替换成”%20“。例如,输入“We are happy”,则输出”We%20are%20happy”。
思路,联想到从尾部循环替换的思想(在冒泡排序算法之中也是从尾部往前进行比较然后交换的),于是形成如下的思路:首先统计出该字符串中所有的空格数量,并重新计算新串所需的char数组的长度,把旧串转化成的char数组拷贝到一个临时数组中,并同时创建一个新的char数组,该新数组的长度是计算之后的长度。从该新数组的尾部开始循环,依次往前比较,只要遇到了空格就替换为%20。如果没有遇到空格就直接复制过来就行。

public class Solution {    public String replaceSpace(StringBuffer str) {        if(str==null){            return null;        }        StringBuilder newstr=new StringBuilder();        for(int i=0;i<str.length();i++){            if(str.charAt(i)==' '){                newstr.append('%');                newstr.append('2');                newstr.append('0');            }else{                newstr.append(str.charAt(i));            }        }        String s=newstr.toString();        return s;    }}
void ReplaceBlank(char string[],int length){   if(string==NULL||length<=0)   return;   /*originalLength为字符串string的实际长度*/   int originalLength=0;   int numberofBlank=0;   int i=0;   while(string[i]!='\0')   {     ++originalLength;     if(string[i]==' ')         ++numberofBlank;     ++i;   }   /*newLength为把空格替换成'%20'之后的长度*/   int newLength=originalLength+numberofBlank*2;   if(newLength>length)     return;   int indexofOriginal=originalLength;   int indexofNew=newLength;   while(indexofOriginal>=0 && indexofNew>indexofOriginal)   {       if(string[indexofOriginal]==' ')       {        string[indexofNew--]='0';         string[indexofNew--]='2';         string[indexofNew--]='%';        }        else        {        string[indexofNew--]=string[indexofOriginal];        }        --indexofOriginal;        }   }
1 0