题解 | #反转字符串#

反转字符串

http://www.nowcoder.com/practice/c3a6afee325e472386a1c4eb1ef987f3

反转字符串

1、题意重述

写出一个程序,接受一个字符串,然后输出该字符串反转后的字符串。(字符串长度不超过1000)

换句话说,就是对给定的字符串进行首尾交换操作。

2、思路整理

使用双指针的思想:

Step1:使用头指针和尾指针,分别指向字符串的开头和结尾。

alt

Step2:头尾指针进行元素交换,并更新头尾指针的位置。

alt

Step3:重复Step2,直到头尾指针相遇,最后得到答案。

alt

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、复杂度分析

时间复杂度:一次遍历,因此时间复杂度为O(N)O(N)

空间复杂度:使用了常数级内存地址空间,因此空间复杂度为O(1)O(1)

22年春节特别专栏_双指针 文章被收录于专栏

双指针题解,图片随便找的!

全部评论

相关推荐

不愿透露姓名的神秘牛友
11-21 19:05
点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客963010790号:为什么还要收藏
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务