Chinaunix首页 | 论坛 | 博客
  • 博客访问: 201668
  • 博文数量: 24
  • 博客积分: 608
  • 博客等级: 中士
  • 技术积分: 371
  • 用 户 组: 普通用户
  • 注册时间: 2012-04-22 21:10
文章分类

全部博文(24)

文章存档

2012年(24)

分类: C/C++

2012-09-01 14:35:44

题目:实现一个函数,把字符串中每个字符空格替换为"%20",例如输入"we are happy",替换为"we%20are%20happy"。
剑指offer p45给出了O(n)的解法,原理就是预先计算出替换后的字符长度,然后把从后向前把前面的复制到后面。


点击(此处)折叠或打开

  1. void replaceBlack(char *str)
  2. {
  3.     int len, i, blank = 0, j;
  4.     len = strlen(str);
  5.     for(i = 0; i < len; i++)
  6.         if(str[i] == ' ')
  7.             blank++;
  8.     
  9.     for(i = len, j = len + blank * 2; i >= 0; i--)
  10.     {
  11.         if(str[i] == ' ')
  12.         {
  13.             str[j--] = '0';
  14.             str[j--] = '2';
  15.             str[j--] = '%';
  16.         }
  17.         else
  18.         {
  19.             str[j--] = str[i];
  20.         }
  21.     }
  22. }

阅读(1815) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~