Cracking the Coding Interview 2.


原题描述

用C或者C++实现void reverse(char *str)函数,即反转一个以null结尾的字符串

算法

Idea:

  • 由于null结尾,不能使用strlen获取字符长度,——>先找到结尾字符的指针
  • 从头——>中<——尾 进行交换,直到尾指针≤头指针,结束程序

Algo:

定义尾指针 = 头指针
while 遍历到尾部,并修改尾指针
定义用于交换的中间变量
while (str > end):
	三步交换,并str++,end--;

C++代码

void reverse(char *str) {
  char *end = str;
  while (*end) {
    end++;
  }

  end--;
  char tp;

  while (str < end) {
    tp = *str;
    *str++ = *end;
    *end-- = tp;
  }
}

Bug Free Procedure

  • 2017.01.15 细节错误
    • 在循环遍历尾指针的时候没有在结束的时候自减一位
  • 2017.01.16 Bingo!!!一次性AC


本作品由 Marvin.Cao 创作,采用 CC BY-NC-SA 3.0 许可协议 进行许可。

Comments