首页 > 试题广场 >

替换空格

[编程题]替换空格
  • 热度指数:1678764 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 64M,其他语言128M
  • 算法知识视频讲解
请实现一个函数,将一个字符串中的每个空格替换成“%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 回复(308)
利用js的函数,先转数组再转字符串
function replaceSpace(str)
{
    const lang=str.length;
    var list=str.split('');
    for(let i=0;i<lang;i++){
        if(list[i]==' ')
            list.splice(i,1,'%20');
    }
    return list.join('');
}


发表于 2021-01-25 20:26:04 回复(0)
//站在api的肩膀上
function replaceSpace(str)
{
    if(typeof str === 'string'&&str.length>=0){
        return str.split(' ').join('%20')
    }
    return ''
}
发表于 2020-12-01 11:15:30 回复(0)
    return str.split(' ').join('%20')
发表于 2020-09-06 23:41:36 回复(0)
function replaceSpace(str)
{
    // write code here
    return Array.from(str).map(v => v === ' ' ? '%20' : v).join('');
}

发表于 2020-08-22 15:01:02 回复(0)
对于js真的很简单,只要拆成字符数组,那就不存在字符需要往后移动的问题

function replaceSpace(str)
{
    var str=str.split("");
    var count=0;
    for(var i=0;i<str.length;i++){
        if (str[i]==" "){
            str[i]="%20";
            count+=1;
        }
    }
    str=str.join("");
    return str;
    // write code here
}


发表于 2020-08-21 15:45:03 回复(0)
function replaceSpace(str)
{
    var s = "";
    var array = str.split(" ");
    s = array.join("%20");
    var string = s.replace(".","。");
    return string;
}
发表于 2020-08-21 11:41:45 回复(0)
正则匹配 全局
function replaceSpace(str)
{
    // write code here
    const regxe = /\s/g
    const newStr = str.replace(regxe, '%20')
    return newStr
}


发表于 2020-08-11 20:19:37 回复(0)
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)