《程序员面试金典》--反转字符串

来源:互联网 发布:大数据图片 编辑:程序博客网 时间:2024/04/30 05:41

题目描述:
请实现一个算法,在不使用额外数据结构和储存空间的情况下,翻转一个给定的字符串(可以使用单个过程变量),给定一个string iniString,请返回一个string,为翻转后的字符串。保证字符串的长度小于等于5000。
测试样例:
"This is nowcoder"返回:"redocwon si sihT"

题目分析:

    这道题目难度不是很大,首先可能会想到,重现建立一个字符串数组,然后遍历字符串,把字符反方向放进字符串数组中,这样实现可以,但是需要O(N)的空间复杂度。

    可以在同一个字符串上实现反转,头尾的字符互换位置,这样只需要O(1)的时间复杂度,在写程序的时候要注意边界条件,对应的位置是否正确,代码实现如下:

代码:

string reverseString(string iniString) {int size=iniString.size();  int beg=0;  --size;  while(beg<size)  {   char ch=iniString[beg];   iniString[beg]=iniString[size];   iniString[size]=ch;   ++beg;   --size;  }  return iniString;
}扩展:

     如果要实现字符串的分段反转,比如“you love i”反转成“i love you”,可以两次反转,首先整体反转,然后再部分反转。
 

0 0
原创粉丝点击