题目描述
请实现一个算法,在不使用额外数据结构和储存空间的情况下,翻转一个给定的字符串(可以使用单个过程变量)。
给定一个string iniString,请返回一个string,为翻转后的字符串。保证字符串的长度小于等于5000。
测试样例:
“This is nowcoder”
返回:”redocwon si sihT”
首先用Python实现:
# -*- coding:utf-8 -*-
class Reverse:
def reverseString(self, iniString):
# write code here
return iniString[::-1]
用Python实现非常的简单,直接使用字符串切片功能,令原字符串倒序输出即可。
再来考虑用C/C++实现:
string reverseString(string iniString)
{
int i,j,s=iniString.length();
for(i=0,j=s-1;i<j;i++,j--)
{
char temp=iniString[i];
iniString[i]=iniString[j];
iniString[j]=temp;
}
return iniString;
};
用C实现用的思想很简单,直接定义一个临时字符变量char temp,把字符串的第一个字符inistring[0]赋给临时变量,最后一个字符inistring[len-1]赋给inistring[0],再把temp中的值赋给inistring[len-1],这是最后一个字符。第一趟就完成了首尾字符的互换,需要注意的是终止条件,当字符长度为偶数时,最后两个字符的index相邻,满足i