首页 > 试题广场 > 替换空格
[编程题]替换空格
  • 热度指数:1527707 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
请实现一个函数,将一个字符串中的每个空格替换成“%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 回复(306)
js解答
思路: 字符串用 空格 切割成数组,新数组用%20拼接;
function replaceSpace(str)
{
var arr = str.split(" ");
var newStr = arr.join("%20")
return newStr;
}

编辑于 2020-05-15 10:07:32 回复(0)
str.replace(/ /g, "%20")
发表于 2020-04-20 09:12:35 回复(0)
// js解法
function replaceSpace(str)
{
    // 确认str整个空格有多少个
    // 比如str = 'We Are Happy', split将它切成三份然后再减去1即可
    let len = str.split(' ').length - 1
    for (let i = 0 ; i < len ; i++) {
        str = str.replace(' ', '%20')
    }
    return str
}
发表于 2020-04-11 17:40:49 回复(0)

用了replaceAll这个方法不行,下面这个可以,两行搞定
function replaceSpace(str)
{
    //将字符串转数组,将数组转字符串
    var arr=str.split(" ");
    return arr.join('%20');
    // write code here
}
发表于 2020-04-10 12:39:36 回复(0)
function replaceSpace(str)
{
    // 使用正则匹配空格,再替换
    let reg = /(^\s+) | (\s+$) |\s+ /g;
    return str.replace(reg,"%20");
}
replaceSpace("We Are Happy");
发表于 2020-03-26 15:06:25 回复(0)
function toReplace(text){
    return text.replace(/\s+/gi,'%20')
}

发表于 2020-03-25 12:26:26 回复(0)
return str.split(' ').join('%20');

split分割转为数组,数组join拼接成字符串
发表于 2020-03-23 20:01:03 回复(0)
function replaceSpace(str)
{
    return str.replace(/\s/g, "%20")
}
直接正则匹配

发表于 2020-03-19 08:59:03 回复(0)
function replaceSpace(str)
{
return(str.split(' ').join('%20'));
}
一行搞定
编辑于 2020-02-14 13:28:36 回复(0)
/**
 * 我的解题思路:
 * 正则匹配一步搞定
 *
 * @param {*} str 
 */
function replaceSpace(str)
{
    // write code here
    return str.replace(/ /g, '%20');
}

/**
 * 不用额外方法的思路:
 * 利用额外的空间复杂度来遍历实现
 *
 * @param {*} str 
 */
function topReplaceSpace(str)
{
    // write code here
    let result = '';
    for (let i = 0; i < str.length; i++) {
        result += str[i] === ' ' ? '%20' : str[i];
    }
    return result;
}
编辑于 2020-02-11 22:56:32 回复(0)
function replaceSpace(str)
{
    // write code here
    //方法一
    return str.split(" ").join("%20");
    
    //方法二
    strArr = str.split('');
    var result = '';
    for(let i = 0; i < strArr.length; i++){
        if(strArr[i] == ' ')
            result += '%20';
        else 
            result += strArr[i];
    }
    return result;
    
    //方法三
    return str.replace(/\s/g, '%20');
    
    //方法四
    return encodeURIComponent(str);
}

编辑于 2019-12-08 16:31:34 回复(0)
function replaceSpace(str)
{
    let new_str = str.replace(/ /g,'%20')
    return new_str
}
发表于 2019-12-04 11:48:44 回复(0)
js的很简单了,因为本身字符串方法就提供了
split(' ')

会把字符串转换为按照空格分割的数组,再使用数组的
join('%20')

就可以拼接成替换掉空格的字符串了。
function replaceSpace(str)
{
  const rStr = str.split(' ').join('%20');
  return rStr;
}


发表于 2019-11-12 18:23:06 回复(0)
function replaceSpace(str){
    return str.split(' ').join('%20');
}

发表于 2019-10-21 17:09:55 回复(0)
js代码,直接用正则,不知道运行效率怎么样
function replaceSpace(str){
    return str.replace(/\s/g, '%20');
}
发表于 2019-09-19 00:41:11 回复(0)
var arr=str.split(' ')
    var aa=arr.join('%20')
    return aa
发表于 2019-09-02 16:25:10 回复(0)
function replaceSpace(str)
{
 return str.replace(/\s/g,'%20')
}

发表于 2019-08-22 15:06:23 回复(0)
function replaceSpace(str)
{
    // 1.计算空格的数量

    var arr = str.split('');
    var num = 0;
    for (let i = 0; i < arr.length; i++) {
        const e= arr[i];
        if(e==' ') num++;   
    }


        // 2. 最终替换之后的数组大小
    var temp = new Array(arr.length+3*num); 

        // 倒序插入 (正序好像也可以🙄)
    for (let i =  arr.length-1; i >=0; i--) {
        const e= arr[i];
        
        if(e==' '){
            temp.unshift('0');
            temp.unshift('2');
            temp.unshift('%');
               
        }else temp.unshift(e);
    }

    return temp.join('');

}
(2)
return str.replace(/\s/g,'%20'); // replace 不用正则只能匹配一个
 这两种思路都是可以的。
发表于 2019-08-20 15:25:48 回复(0)
return str.replace(/\s/g,'%20')
发表于 2019-08-10 16:18:08 回复(0)
function replaceSpace(str)
{
    // write code here
    
  return str.replace(/ /g,"%20");
 
}
发表于 2019-08-08 16:03:17 回复(0)