面试题4:替换空格

面试题4:替换空格


提交网址: http://www.nowcoder.com/practice/4060ac7e3e404ad1a894ef3e17650423?tpId=13&tqId=11155


参与人数:10327 时间限制:1秒 空间限制:32768K
本题知识点:字符串

题目描述


请实现一个函数void replaceSpace(char *str,int length),将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。


分析:


AC代码

文件名: AimedAtOffer-replaceSpace.cpp

[cpp]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. #include<iostream>  
  2. #include<string>  
  3. #include<cstdio>  
  4. using namespace std;  
  5.   
  6. class Solution{  
  7. public:  
  8. void replaceSpace(char *str, int length)  
  9. {  
  10.     if(str==NULL || length<=0) return;  
  11.       
  12.     int newlen=0;  
  13.     int spaceCount = 0;  
  14.     int idx;  
  15.     for(idx = 0; str[idx] != '\0'; idx++)  
  16.     {  
  17.         if (str[idx] == ' ')  
  18.         {  
  19.             spaceCount++;  
  20.         }  
  21.     }  
  22.     newlen = idx + 2*spaceCount;  
  23.     if(newlen > length) return;  
  24.     str[newlen]='\0';  //此行很关键   
  25.     int frontCur = idx - 1, backCur = newlen-1;  
  26.     for(; frontCur >= 0 && backCur > frontCur; frontCur--)  
  27.     {  
  28.         if (str[frontCur] == ' ')  
  29.             {  
  30.             str[backCur--] = '0';  
  31.             str[backCur--] = '2';  
  32.             str[backCur--] = '%';  
  33.             }  
  34.         else str[backCur--] = str[frontCur];  
  35.     }  
  36. }  
  37. };  
  38.   
  39. // 以下为测试部分  
  40. /* 
  41. int main() 
  42. { 
  43.     Solution sol; 
  44.     char str[]="Hello World, haha"; 
  45.     sol.replaceSpace(str, 20); 
  46.     // printf("%s\n",str); 
  47.     cout<<str<<endl;     
  48.     return 0; 
  49. } 
  50. */  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值