AcWing
  • 首页
  • 课程
  • 题库
  • 更多
    • 竞赛
    • 题解
    • 分享
    • 问答
    • 应用
    • 校园
  • 关闭
    历史记录
    清除记录
    猜你想搜
    AcWing热点
  • App
  • 登录/注册

LeetCode 344. Reverse String    原题链接    简单

作者: 作者的头像   yxc ,  2018-06-28 22:02:00 ,  所有人可见 ,  阅读 1345


0


题目描述

请翻转一个字符串。

请使用原地算法,即不要给额外的数组分配空间,只能使用 $O(1)$ 的额外空间。

数据保证输入字符串中均是ASCII表中的可打印字符。

样例

给定 s = "hello", 输出 "olleh".

算法

(字符串处理) $O(n)$

一般可以用两个指针分别从首尾往中间扫描,交换两个指针指向的字符,直到两个指针相遇为止。

这里我们直接用C++中的逆向迭代器rbegin和rend,重新构造string即可。

时间复杂度分析:整个字符串仅被遍历一次,所以时间复杂度是 $O(n)$。

C++ 代码

class Solution {
public:
    void reverseString(vector<char>& s) {
        for (int i = 0, j = s.size() - 1; i < j; i ++, j -- )
            swap(s[i], s[j]);
    }
};

6 评论


用户头像
wangzitiansky   2020-09-15 15:39         踩      回复

好像 Leetcode 改题了,最新的函数参数是这样的 vector<char>& s

用户头像
yxc   2020-10-13 13:55         踩      回复

多谢提醒,代码已更新。


用户头像
Komorebi   2020-02-28 14:07         踩      回复

reverse(s.begin(),s.end());

用户头像
yxc   2020-03-03 05:14         踩      回复

也是可以的。


用户头像
Bella_Wanying   2019-11-02 11:05         踩      回复

这个好像写错了,跟leetcode原题不符

用户头像
yxc   2019-11-02 12:24         踩      回复

已完善。


App 内打开
你确定删除吗?
1024
x

© 2018-2025 AcWing 版权所有  |  京ICP备2021015969号-2
用户协议  |  隐私政策  |  常见问题  |  联系我们
AcWing
请输入登录信息
更多登录方式: 微信图标 qq图标 qq图标
请输入绑定的邮箱地址
请输入注册信息