字符串取代字符

题目

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

 

在开始正题之前,先说个小故事。作为刚开始刷题的我,在刷这道题时,在想java如何将其一步步移位。然而在旁边无所事事的女朋友看了过来,作为只用过简单python代码能力相对较弱的人,我就说这题给你一个小时都做不出来,于是她很不服气地就做了起来,然后。。。就没有然后了,因为他比我先做出来了!!!

她的方法

def main():
    s = 'we are happy'
    print(s.replace(" ","%20"))
main()

好的,没看错,就是这么简单地就出来了!!!

我瞬间石化~~~哭喊着:这是耍赖!!!

然而.......

Java简单实现

public class Solution {
    public String replaceSpace(StringBuffer str) {
        return str.toString().replaceAll(" ", "%20");
    }
}

是滴,没看错,Java最简单的代码也是这样!

当然了,方法还是很多的,比如下面这个新建一个字符串Buffer,然后将原有的字符串变成字符一个个加进去,遇到空格,加“%20”

public class Solution {
    public String replaceSpace(StringBuffer str) {
        String s = str.toString();
		char [] strChar = s.toCharArray();
		StringBuffer out = new StringBuffer();
		for(int i=0; i<strChar.length; i++){
		    if(strChar[i]==' ')
		        out.append("%20");
		    else
		        out.append(strChar[i]);
		}
		return out.toString();
    }
}

下面方法与第一种方法类似

public class Solution {
    public String replaceSpace(StringBuffer str) {
        if(str==null)
        {
            return null;
        }
        for(int i=0;i<str.length();i++)
        {
            char c = str.charAt(i);
            if(c==' ')
            {
               str.replace(i,i+1,"%20");
            }
        }
        String s = str.toString();
        return s;
    }
}

好吧,我的思想更适合C++的,用Java琢磨半天是我的过错。。。

附上C++实现一份

class Solution {
public:
    void replaceSpace(char *str,int length) {
         if(str==NULL)
             return ;
         int CountOfBlanks=0;
         int Originallength=0;
         for(int i=0;str[i]!='\0';i++)
             {
             Originallength++;
             if(str[i]==' ')
                 ++CountOfBlanks;
         }
         int len =Originallength+2*CountOfBlanks;
         if(len+1>length)
             return ;
          
         char*pStr1=str+Originallength;//复制结束符‘\0’
         char*pStr2=str+len;
        while(pStr1<pStr2)
            {
            if(*pStr1==' ')
                {
                *pStr2--='0';
                *pStr2--='2';
                *pStr2--='%';    
            }
            else
             {
                 *pStr2--=*pStr1;
            }
            --pStr1;
        }
    }
};

总结与展望

思维不能局限,僵化,最重要的一点,不要得罪老婆,不然后果很难堪~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值