反转字符串
1、题意重述
写出一个程序,接受一个字符串,然后输出该字符串反转后的字符串。(字符串长度不超过1000)
换句话说,就是对给定的字符串进行首尾交换操作。
2、思路整理
使用双指针的思想:
Step1:使用头指针和尾指针,分别指向字符串的开头和结尾。
Step2:头尾指针进行元素交换,并更新头尾指针的位置。
Step3:重复Step2,直到头尾指针相遇,最后得到答案。
3、代码实现
class Solution {
public:
string solve(string str) {
int i = 0, j = str.length() - 1;
while(i < j)
{
swap(str[i++], str[j--]); //交换两端元素,并移动指针
}
return str;
}
};
4、复杂度分析
时间复杂度:一次遍历,因此时间复杂度为。
空间复杂度:使用了常数级内存地址空间,因此空间复杂度为。