首页 > 试题广场 >

替换空格

[编程题]替换空格
  • 热度指数:148727 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
请实现一个函数,将一个字符串s中的每个空格替换成“%20”。
例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。

数据范围:。保证字符串中的字符为大写英文字母、小写英文字母和空格中的一种。

示例1

输入

"We Are Happy"

输出

"We%20Are%20Happy"
示例2

输入

" "

输出

"%20"
推荐
使用JavaScript实现:
方法一:暴力破解
function replaceSpace( s ) {
    let result = '';
    for(let i = 0;i < s.length;i++) {
        if(s[i] === ' ') {
            result += '%20';
        } else {
            result += s[i];
        }
    }
    return result;
}
方法二:使用字符串的replace方法,将正则对象作为参数传入replace方法
function replaceSpace( s ) {
    let regx = new RegExp(' ','g');
    return s.replace(regx,'%20');
}
方法三:将字符串以空格作为分隔符使用split()转成数组,然后对数组使用join()方法
function replaceSpace( s ) {
    return s.split(' ').join('%20');
}
方法四:将字符串使用扩展运算符转成数组,然后使用数组的map方法
function replaceSpace( s ) {
    let arr = [...s].map(item => {
        return item === ' ' ? '%20' : item;
    });
    return arr.join('');
}
编辑于 2021-07-06 10:36:50 回复(3)
/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param s string字符串 
 * @return string字符串
 *
 * C语言声明定义全局变量请加上static,防止重复定义
 */
char* replaceSpace(char* s ) {
    // write code here
    int i = 0;
    int j = 0;
    int k = 0;
    static char ch[3100] = {0};        //用static修饰使ch数组所在的内存空间不被释放
    
    while (s[i])
    {
        if (s[i] == ' ')
        {
            ch[j++] = '%';
            ch[j++] = '2';
            ch[j++] = '0';
        }
        else
        {
            ch[j++] = s[i];
        }
        i++;
    }
    ch[j] = '\0';
    
    return ch;
}
发表于 2022-03-21 21:28:29 回复(0)
//C语言发现需要分配很大的预存空间啊!

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param s string字符串 
 * @return string字符串
 */
char* replaceSpace(char* s ) {
    // write code here
	char ans[10000]={0} ;
    
	int i = 0;
	while (*s != '\0')
	{
		if (*s == ' ')
		{
			ans[i++]= '%';
			ans[i++] = '2';
			ans[i++] = '0';
		}
		else
		{
			ans[i++] = *s;
		}
        s++;
	}
    ans[i] = '\0';
    return ans;
}

发表于 2021-09-26 22:28:20 回复(0)
/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param s string字符串 
 * @return string字符串
 */
char* replaceSpace(char* s ) {
    // write code here
    int sLen = strlen(s);
    int num = 0;
    for(int i = 0; i < sLen; i++)
    {
        if(s[i] == ' ') num++;
    }
    int rLen = sLen + 2*num;
    
    char *Rets = (char*)malloc(rLen*sizeof(char));
    memset(Rets, 0, rLen);
    int j = 0;
    for(int i = 0; i < sLen; i++)
    {
        if(s[i] == ' ')
        {
            Rets[j++] = '%';
            Rets[j++] = '2';
            Rets[j++] = '0';
        }
        else Rets[j++] = s[i];
    }
    return Rets;
}

发表于 2021-08-31 10:53:37 回复(0)
分享一个C的吧。
char* replaceSpace(char* s ) {
    // write code here
    char* ret_char = (char *)malloc(strlen(s)*3);
    int index = 0;
    for(int i = 0; i < strlen(s); i++) {
        if(s[i]==' ') {
            ret_char[index++] = '%';
            ret_char[index++] = '2';
            ret_char[index++] = '0';  
            
        } else {
            ret_char[index++] =  s[i];
        }
    }
    return ret_char;
}


发表于 2021-08-10 11:37:59 回复(1)
char* replaceSpace(char* s ) {
    // write code here
    int i,j,len;
    char*p,*t,*m;
    p = s;
    len = strlen(s);
    m = t = (char*)malloc(3*len*sizeof(char));
    for(i=0;i<len;i++,p++,t++)
    {
        
        while(*p==' ')
        {
            *t = '%';
            *(++t) = '2';
            *(++t) = '0';
            p++;
            t++;
        }
        *t = *p;
        
    }
    return m;
}
发表于 2021-07-25 21:41:25 回复(0)

问题信息

上传者:牛客301499号
难度:
11条回答 10134浏览

热门推荐

通过挑战的用户

查看代码