首页 > 试题广场 > 替换空格
[编程题]替换空格
请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
推荐
//思路
//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 回复(270)
# -*- coding:utf-8 -*-
class Solution:
    # s 源字符串
    def replaceSpace(self, s):
        # write code here
        list01=s.split(' ')
        return '%20'.join(list01)

编辑于 2019-10-12 13:53:30 回复(0)
# -*- coding:utf-8 -*-
class Solution:
    def replaceSpace(self, s):
        return '%20'.join(s.split(' '))
…………
发表于 2019-10-10 09:23:36 回复(0)
def replaceSpace(self, s):
    return s.replace(' ', '%20') 
为什么不试试神奇的Python呢
编辑于 2019-09-14 17:24:12 回复(0)
# -*- coding:utf-8 -*-
class Solution:
    # s 源字符串
    def replaceSpace(self, s):
        # write code here
        return s.replace(' ','%20')

python是真滴简单的很。。。。
发表于 2019-09-11 23:20:29 回复(0)
# -*- coding:utf-8 -*-
class Solution:
    # s 源字符串
    def replaceSpace(self, s):
        # write code here
        str = ''
        for i in range(len(s)):
            if s[i] == ' ':
                str += r'%20'
            else:
                str += s[i]
        return str
定义一个空字符串
for循环遍历字符串
判断每一个遇到的字符是否是空格
如果是空格 拼接替换的字符到定义的字符串
如果不是 则拼接
然后返回拼接好的字符串

发表于 2019-09-04 19:44:06 回复(0)
小白一只,虽然通过了测试用例但还是觉得哪里应该改,大家可以帮我看看嘛?
# -*- coding:utf-8 -*-
class Solution:
    # s 源字符串
    def replaceSpace(self, s):
        # write code here
        n = len(s)
        if n==0 :
            return s
        count = 0
        for i in range(n):
            if s[i]==' ':
                count += 1
        n2 = n + 2*count     # 新字符串长度
        #s2 = []
        s2 = [0]*n2
        p1 = n-1
        p2 = n2-1
        while p1>=0 :
            while p1>=0 and s[p1]!=' ':
                s2[p2] = s[p1]
                p1 -= 1
                p2 -= 1
            if p1<0:
                return "".join(s2)
            elif s[p1]==' ':
                p1 -= 1
                p2 -= 3
                s2[p2+1],s2[p2+2],s2[p2+3] = '%','2','0'
        return "".join(s2)


发表于 2019-09-03 20:31:57 回复(0)
1.list列表遍历,定义空列表list_res
2.每次循环载入list中元素i载入list_res中,遇到空格则替换为'%20'
3.将list_res中逐元素相加组合成新字符串
发表于 2019-09-02 11:06:23 回复(0)
str.replace(' ','%20')
发表于 2019-08-19 17:49:59 回复(0)
# -*- coding:utf-8 -*-
class Solution:
    # s 源字符串
    def replaceSpace(self, s):
        # write code here
        length=len(s)
        spaceNum=0
        for i in range(length):
            if s[i]==' ':
                spaceNum+=1
        newLength = length + 2*spaceNum
        oldIndex = length-1
        newIndex = newLength-1
        s=s+'*'*2*spaceNum
        while (oldIndex>=0)&(newIndex>oldIndex):
            if s[oldIndex]==' ':
                s=s[:newIndex]+'0'+s[newIndex+1:]
                newIndex -= 1
                s=s[:newIndex]+'2'+s[newIndex+1:]
                newIndex -= 1
                s=s[:newIndex]+'%'+s[newIndex+1:]
                newIndex -= 1
            else:
                s=s[:newIndex]+s[oldIndex]+s[newIndex+1:]
                newIndex -= 1
            oldIndex -= 1
        return s
尝试不用replace方法的python程序,其实也就是将Java程序改了下,成功编译还是很开心的~
发表于 2019-08-19 16:00:33 回复(0)
def rp_kongge(s): if str(s).find(" ")!=-1:
        a=str(s).replace(" ","%20")#字符串是不可变的数据类型,想要改变,需要存到一个新的变量里  print(a)  else: print("异常") rp_kongge("We Are Happy")
发表于 2019-08-16 23:18:40 回复(0)
# -*- coding:utf-8 -*-
class Solution:
    # s 源字符串
    def replaceSpace(self, s):
        # write code here
        rep=[]
        for i in range(len(s)):
            if s[i]==" ":
                rep.append("%20")
            else:
                rep.append(s[i])
        s="".join(rep)
        return s
新建一个空列表,遍历字符串,如果非空格,则吧原字符串中的字符添加到新列表中,如果是空格,则添加“%20”,最后把列表转成字符串输出
发表于 2019-08-15 00:33:09 回复(0)
python解法:
注意:python中字符串后面没有字符串结束符,字符串对象的长度不需要像C语言一样用结束符说明字符串长度。
1.使用replace
# -*- coding:utf-8 -*-
class Solution:
    # s 源字符串
    def replaceSpace(self, s):
        # write code here
        s=s.replace(' ', '%20')
        return s


2.不使用replace
# -*- coding:utf-8 -*-
class Solution:
    # s 源字符串
    def replaceSpace(self, s):
        # write code here
		seq=''
		for i in s:
			b=i
			if i==' ':
				b='%20'
			seq+=b
		return seq


编辑于 2019-08-11 22:02:09 回复(0)
python
    def replaceSpace(self,s):
        # write code here
        l = ''
        for i in s:
            if i == ' ':
                l = l + '%' + '2' + '0'
            else:
                l = l + i
        return l
Time: O(n)
发表于 2019-08-08 18:18:08 回复(0)

运行时间:27ms

占用内存:5852k

python版本:
def replaceSpace(self, s):
        # write code here
        res=[]
        for i in s:
            if i !=' ':
                res.append(i)
            else:
                res+="%20"
        str1=''.join(res)
        return str1
发表于 2019-08-08 13:04:02 回复(0)
调用.replace()方法,将文本中出现的" "用"%20"代替。
    def replaceSpace(self, s):
        s=s.replace(" ","%20")
        return s
发表于 2019-08-05 14:23:49 回复(0)
# -*- coding:utf-8 -*-
class Solution:
    # s 源字符串
    def replaceSpace(self, s):
        # write code here
        return "%20".join(list(s.split(' ')))


编辑于 2019-08-03 13:02:49 回复(0)
# -*- coding:utf-8 -*-
class Solution:
    # s 源字符串
    def replaceSpace(self, s):
        # write code here
        res = ''
        for i in range(len(s)):
            if s[i] == ' ':
                res += '%20'
            else:
                res += s[i]
        return res
发表于 2019-08-01 17:03:10 回复(0)

python

def replaceSpace(s):
    return s.replace(" ", "%20")

C

char* replaceSpace(char* string)
{
    int space_cnt = 0;
    for (int i=0;i<strlen(string);i++)
    {
        if (*(string+i) == ' ') space_cnt++;
    }
    char *p_head = NULL, *p_end = NULL;
    p_head  = &string[strlen(string)];
    p_end = &string[strlen(string) + space_cnt*2];
    for (int i = 0; i < strlen(string); i++)
    {
        if (p_end == p_head)
        {
            return string;
        }
        if (*p_head == ' ')
        {
            *p_end = '0';
            *(--p_end) = '2';
            *(--p_end) = '%';
            p_head--;
            p_end--;
        }
        else
        {
            *(p_end--) = *(p_head--);
        }
    }
    return NULL;
}
编辑于 2019-07-29 17:34:16 回复(0)
# -*- coding:utf-8 -*-
class Solution:
    # s 源字符串
    def replaceSpace(self, s):
        # write code here
        s = s.split(' ')
        return '%20'.join(s)


发表于 2019-07-26 19:18:34 回复(0)
# -*- coding:utf-8 -*-
class Solution:
    # s 源字符串
    def replaceSpace(self, s):
        # write code here
        return s.replace(' ', '%20')

发表于 2019-07-26 11:18:44 回复(0)