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

126个回答

添加回答
推荐
//思路
//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 回复(240)
py大法好...
return(char.replace(' ','%20'))

发表于 2019-05-10 15:15:45 回复(0)
# -*- coding:utf-8 -*-
class Solution:
    # s 源字符串
    def replaceSpace(self, s):
        # write code here
        s2 = []
        for i in range(len(s)):
            if s[i] == ' ':
                s2.append("%20")
            else:
                s2.append(s[i])
        return "".join(s2)

试试我这个做法
发表于 2019-04-08 13:56:03 回复(0)
class Solution:
    # s 源字符串
    def replaceSpace(self, s):
        # write code here
        list = []
        list = s.split(' ')
        n = len(list)
        new_s = list[0]
        for v in range(1, n):
            new_s += '%20'
            new_s += list[v]
        return new_s
        
S = Solution()
while True:
    try:
        my_str = raw_input()
        print(S.replaceSpace(my_str))
    except:
        break
发表于 2019-03-28 16:45:52 回复(0)
# -*- coding:utf-8 -*-
class Solution:
    # s 源字符串
    def replaceSpace(self, s):
        # write code here
        rep_str = '%20' # 替换的字符
        space_nums = 0 # 空格个数
        for i in s:
            if i == ' ':
                space_nums += 1
        lens = len(s) # 原始字符串长度
        rep_lens = lens+(len(rep_str)-1)*space_nums # 替换后的长度
        s = list(s)+['0']*(rep_lens-lens)
        p1 = lens-1 # p1指向原始字符串最后一位
        p2 = rep_lens-1 # p2指向替换后字符串的最后一位
        while p1 != p2:
            if s[p1] != ' ':
                s[p2] = s[p1]
                p1 -= 1
                p2 -= 1
            else:
                s[(p2-len(rep_str)+1):(p2+1)] = rep_str
                p2 = p2-len(rep_str)
                p1 -= 1
        return ''.join(s)
发表于 2019-03-24 01:08:44 回复(0)
python3种方法:
 
1:
class Solution:
 # s 源字符串
 def replaceSpace(self, s):
 # write code here
 s=list(s)
 for i,item in enumerate(s):
 if item == " ":
 s[i]='%20'
 return "".join(s)
2:
class Solution:
    # s 源字符串
    def replaceSpace(self, s):
        # write code here
        return s.replace(" ","%20")

3:
class Solution:
    # s 源字符串
    def replaceSpace(self, s):
        # write code here
        originalLength=len(s)
        blankNum=0
        for item in s:
            if item==" ":
                blankNum+=1
        newLength=originalLength+blankNum*2
        s=list(s)
        s+=['#']*2*(blankNum+1)
        while originalLength>=0 and newLength>=originalLength:
            if s[originalLength]==" ":
                s[newLength]="0"
                newLength-=1
                s[newLength]='2'
                newLength-=1
                s[newLength]="%"
                newLength-=1
            else:
                s[newLength]=s[originalLength]
                newLength-=1
            originalLength-=1
        return "".join(s).rstrip('#')


编辑于 2019-04-03 11:10:54 回复(0)
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)