码迷,mamicode.com
首页 > 其他好文 > 详细

剑指offer---------------字符串

时间:2015-03-04 20:46:07      阅读:132      评论:0      收藏:0      [点我收藏+]

标签:

替换空格

题目:把字符串中的每个空格替换“%20”。例如输入“We are happy.”,则输出“We%20are%20happy.”

思路:从字符串后面开始复制和替换,首先准备两个指针p1和p2,p1指向原始字符串的末尾,p2指向替换之后的字符串的末尾。逐个移动p1,如果没有遇到空格,逐个把它指向的字符复制到p2。如果遇到空格,p1向前移动一格,p2之前插入字符串“%20”,同时将p2向前移动3格。依次重复,直到p1和p2指向同一个位置,表明所有空格都已经替换完毕。

核心代码:

void ReplaceBlank(char string[],int length)

{

  if (string=NULL||length<=0)

    return;

  int originallength=0;

  int numberofBlank=0;

  int i=0;

  while(string[i]!=‘\0‘)

  {

    ++originallength;

    if(string[i]==‘ ‘)

      ++numberofBlank;

    ++i;   

  }

  int newlength=originallength+2*numberofBlank;

  if(newlength>length)

    return;

      int indexoriginal=originallength;

  int indexnew=newlength;

  while(indexoriginal>=0&&indexoriginal<indexnew)

  {

    if(string[indexoriginal]=‘ ‘])

    {

      string[indexnew--])=‘%‘;

      string[indexnew--])=‘0‘;

      string[indexnew--])=‘2‘;

      string[indexnew--])=‘%‘;   

        }

    else

    {

      string[indexnew--]=string[indexoriginal];

    }

  --indexoriginal;

}

 

剑指offer---------------字符串

标签:

原文地址:http://www.cnblogs.com/xixi1992/p/4314172.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!