戴璞微的博客

简单点!做事的动机简单点

剑指offer--替换空格

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


思路:
遍历字符串,遇见“ 后替换成“%20”并把控制下标的变量加3,如果不是则继续,即控制下标的变量加1。


Java代码如下:

public class Solution {
    public int Find(int start , char c,StringBuffer str){
        int index = -1;
        char[] ch = str.toString().toCharArray();
        for ( int i = start ; i < str.length() ; i++){
            if ( ch[i] == c){
                index = i;
                break;
            }
        }
        return index;
    }

    public String replaceSpace(StringBuffer str) {
        String s = "%20";
        for ( int i = 0 ; i < str.length() ; ){
            int index = Find(i, ' ', str);
            if ( index != -1){
                str.replace(index, index+1,s);
                i = i + 3;
                continue;
            }else{
                i++;
                continue;
            }
        }
        return str.toString();
    }
}

C++代码如下:

class Solution {
public:
    void replaceSpace(char *str,int length) {
        int oldlength = 0;
        int newlength = 0;
        int i = 0;
        //首先遍历数组计算新数组长度 
        while(str[i] != '\0'){
            oldlength++; 
            if(str[i] == ' '){
                newlength += 3;
            }else{
                newlength++;
            }
            i++;
        }
        //开始替换
        while(oldlength >= 0){
            if(str[oldlength] == ' '){
                str[newlength--] = '0';
                str[newlength--] = '2';
                str[newlength--] = '%';
            }else{
                str[newlength--] = str[oldlength];
            }
            oldlength--;
        } 
    } 
};
阅读更多
版权声明:本文为博主原创文章,若需转载,请注明http://blog.csdn.net/qq_30091945 https://blog.csdn.net/qq_30091945/article/details/69315368
文章标签: 剑指offer
个人分类: 面试真题在线编程
所属专栏: 剑指offer题解
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭