首页 > 试题广场 > 替换空格
[编程题]替换空格
请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。

121个回答

添加回答
推荐
//思路
//1:从前往后插入,这样移动·的次数多不建议
//2:从后往前插入

class Solution {
public:
void replaceSpace(char *str,int length) {
        //遍历一边字符串找出空格的数量
        if(str==NULL||length<0)
            return ;
        int i=0;
        int oldnumber=0;//记录以前的长度
        int replacenumber=0;//记录空格的数量
        while(str[i]!='\0')
            {
               oldnumber++;
               if(str[i]==' ')
                   {
                     replacenumber++;
                   }
                  i++; 
            }
        int newlength=oldnumber+replacenumber*2;//插入后的长度
        if(newlength>length)//如果计算后的长度大于总长度就无法插入
            return ;
        int pOldlength=oldnumber; //注意不要减一因为隐藏个‘\0’也要算里
        int pNewlength=newlength;
        while(pOldlength>=0&&pNewlength>pOldlength)//放字符
            {
              if(str[pOldlength]==' ') //碰到空格就替换
                  {
                     str[pNewlength--]='0';
                     str[pNewlength--]='2';
                     str[pNewlength--]='%';
                     
                  }
               else //不是空格就把pOldlength指向的字符装入pNewlength指向的位置
               {
                    str[pNewlength--]=str[pOldlength];
                   
               }
             pOldlength--; //不管是if还是elsr都要把pOldlength前移
             
           }
        

}
};
编辑于 2015-12-07 18:51:44 回复(226)
Python,一行搞定:
# -*- coding:utf-8 -*-
class Solution:
    # s 源字符串
    def replaceSpace(self, s):
        # write code here
        return s.replace(' ', "%20")

发表于 2019-03-19 17:11:57 回复(0)
class Solution:
    def replaceSpace(self, s):
        string =''
        for i in s:
            if i == ' ':
                i= '%20'
                string +=i
            else:
                string +=i
        return string
发表于 2019-03-17 22:25:47 回复(0)
# -*- coding:utf-8 -*-
class Solution:
    # s 源字符串
    def replaceSpace(self, s):
        # write code here
        temp = s.split(" ")
        results = ""
        length = len(temp)
        for i in range(length):
            results += temp[i]
            if i < (length -1):
                results += "%20"
        return results

发表于 2019-03-14 11:40:58 回复(0)
# -*- coding:utf-8 -*- class Solution:  # s 源字符串  def replaceSpace(self, s):  # write code here  res= ''  for charin s:  if char== ' ':  res+= '%20'  else:  res +=char returnres

发表于 2019-03-12 16:39:15 回复(0)

python

    def replaceSpace(self, s):
        # write code here
        if not s:
            return s
        if not isinstance(s,str):
            return
        s1 = ''
        for item in s:
            if item == ' ':
                s1 += '%20'
            else:
                s1 += item
        return s1

申请一个临时字符串,去遍历输入的字符串,遇到空格,在临时字符串后面拼接 '%20',否则,在临时字符串后面拼接原字符串的原始字符串

发表于 2019-03-09 17:50:51 回复(0)
# -*- coding:utf-8 -*-
class Solution:
    # s 源字符串
    def replaceSpace(self, s):
        return s.replace(' ',"%20")
        

发表于 2019-03-09 17:08:36 回复(0)
# -*- coding:utf-8 -*-
class Solution:
    # s 源字符串
    def replaceSpace(self, s):
        # write code here
        if s == '':
            return s
        re = ''
        for i in s:
            if i==' ':
                re = re +'%20'
            else:
                re = re + i
        return re
发表于 2019-03-09 11:10:58 回复(0)
class Solution:
    def replaceSpace(self):
        return print(s.replace(' ','%20'))
s = 'We Are Happy'
A =Solution.replaceSpace(s)    
    
发表于 2019-03-08 20:36:29 回复(0)
# -*- coding:utf-8 -*-
class Solution:
    # s 源字符串
    def replaceSpace(self, s):
        # write code here
        return '%20'.join(s.split(' '))

发表于 2019-03-05 13:32:15 回复(0)
# -*- coding:utf-8 -*-
class Solution:
    # s 源字符串
    def replaceSpace(self, s):
        # write code here
        ss=''
        for i in s:
            if i==' ':
                i='%20'
            ss+=i 
        return ss
发表于 2019-03-03 11:27:06 回复(0)
class Solution:
    def replaceSpace(self, s):
        return "%20".join(s.split(" "))


发表于 2019-02-23 23:16:11 回复(0)
class Solution:
    # s 源字符串
    def replaceSpace(self, s):
        # write code here
        length = len(s)
        print(s)
        change_s = []
        for i in range(0,length):
            if s[i] != ' ':
                change_s.append(s[i])
            else:
                change_s.append('%20')
        return ''.join(change_s)
发表于 2019-02-22 14:31:09 回复(0)
# -*- coding:utf-8 -*-
class Solution:
    # s 源字符串
    def replaceSpace(self, s):
        s_list = s.split(" ")
        return "%20".join(s_list)
发表于 2019-02-12 00:07:56 回复(0)
# -*- coding:utf-8 -*-
class Solution:
    # s 源字符串
    def replaceSpace(self, s):
        # write code here
        s1 = s.replace(' ','%20')
        return s1
发表于 2019-01-18 18:20:03 回复(0)
# 重点:如果后面没有足够的内存,则需要生成一个新的字符串进行替换;如果有字符串的话,则可以直接进行替换。
# 解题思路:
(1)判断是否为非法输入:元素不是字符/长度<=0/空字符串
(2)直接进行replace进行替换。
发表于 2018-12-01 09:41:22 回复(0)
# -*- coding:utf-8 -*-
class Solution:
    # s 源字符串
    def replaceSpace(self, s):
        return '%20'.join(s.split(' '))

str.split(' ')  : 指定分隔符对字符串进行切片,返回分割后的字符串列表。
str.join() 方法用于将序列中的元素以指定的字符连接生成一个新的字符串。
发表于 2018-11-12 23:08:17 回复(0)
python版本:
# -*- coding:utf-8 -*-
class Solution:
    # s 源字符串
    def replaceSpace(self, s):
        # write code here
        s = s.replace(' ', '%20')
        return s

# -*- coding:utf-8 -*-
class Solution:
    # s 源字符串
    def replaceSpace(self, s):
        # write code here
        import re
        s = re.sub(' ', '%20', s)
        return s

# -*- coding:utf-8 -*-
class Solution:
    # s 源字符串
    def replaceSpace(self, s):
        # write code here
        L = s.split(' ')
        s = '%20'.join(L)
        return s

# -*- coding:utf-8 -*-
class Solution:
    # s 源字符串
    def replaceSpace(self, s):
        # write code here
        s1 = ''
        for i in range(len(s)):
            if s[i] == ' ':
                s1 += '%20'
            else:
                s1 += s[i]
        return s1

发表于 2018-11-09 19:41:32 回复(0)
# -*- coding:utf-8 -*-
class Solution:
    # s 源字符串
    def replaceSpace(self, s):
        # write code here
        return "%20".join(s.split(" "))

python一行搞定,不知道是不是这样的

发表于 2018-10-31 21:21:17 回复(0)
就需要注意考虑""的情况
发表于 2018-10-20 21:24:39 回复(0)
strList=[]
        try:
            strList=s.split(' ')
            return '%20'.join(strList)
        except:
            pass
python处理比较简单,直接分割后再拼接就行了,拼接的时候加上%20
发表于 2018-10-17 16:13:43 回复(0)

扫一扫,把题目装进口袋

牛客网,程序员必备求职神器

扫描二维码,进入QQ群

扫描二维码,关注牛客网公众号

  • 公司地址:北京市朝阳区大屯路东金泉时代3-2708北京牛客科技有限公司
  • 联系方式:010-60728802(电话) admin@nowcoder.com
  • 牛客科技©2018 All rights reserved
  • 京ICP备14055008号-4
  • 京公网安备 11010502036488号