剑指offer66题--Java实现,c++实现和python实现 2.替换空格

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

java实现

public class Solution {
    public String replaceSpace(StringBuffer str) {
    	if(str==null||str.length()<0)//边界条件
            return null;
        StringBuffer newstr=new StringBuffer();
        for(int i=0;i<str.length();i++)//遍历字符串
        {
            if(str.charAt(i)==' ')//如果字符串中有空格,则使用append()加入要替换的东西
            {
                newstr.append('%');
                newstr.append('2');
                newstr.append('0');
            }
            else//否则将字符串按字符加入newstr中
                newstr.append(str.charAt(i));
        }
        return newstr.toString();
    }
}

C++实现

class Solution {
public:
	void replaceSpace(char *str,int length) {
        if(str==NULL||length<=0)//边界条件
            return;
        int originalLength=0;//原始长度
        int numberOfBlank=0;//空格数量
        int i=0;
        while(str[i]!='\0')//遍历字符串
        {
            ++originalLength;
            if(str[i]==' ')//如果遇到空格,空格数加一
                ++numberOfBlank;
            ++i;
        }
        int newLength=originalLength+numberOfBlank*2;//替换后新的字符串长度
        int indexOfOriginal=originalLength;//原始字符串最后一位下标
        int indexOfNew=newLength;//替换后新字符串最后一位下标
        while(indexOfOriginal>=0&&indexOfNew>indexOfOriginal)//替换
        {
            if(str[indexOfOriginal]==' ')
            {
                str[indexOfNew--]='0';
                str[indexOfNew--]='2';
                str[indexOfNew--]='%';
            }
            else
                str[indexOfNew--]=str[indexOfOriginal];
            --indexOfOriginal;
        }
	}
};

python实现

# -*- coding:utf-8 -*-
class Solution:
    # s 源字符串
    def replaceSpace(self, s):
        ls=s.split(' ')#按空格分割
        return '%20'.join(ls)#将要替换的通过join()加入ls
        # write code here

猜你喜欢

转载自blog.csdn.net/walter7/article/details/84031352