题解 | #反转字符串#

反转字符串

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年春节特别专栏_双指针 文章被收录于专栏

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

全部评论

相关推荐

05-29 20:34
门头沟学院 C++
KarlAllen_直通春招版:得做好直接春招的准备。学历差的话,一是面试要求会比学历好的严格不少,二是就算面试通过了也会被排序。总之暑期和秋招对于学历差的就是及其不友好
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务