LeetCode 344 ---字符串的反转

Jenkins插件下载慢?3分钟搞定国内镜像加速(含华为/腾讯/清华源对比) 本文详细介绍了如何通过国内镜像源加速Jenkins插件下载,包括华为云、腾讯云和清华源等主流镜像站的性能对比及一键配置方案。通过实测数据展示华为云镜像站表现最佳,下载速度达19.4MB/s,并提供sed命令、管理界面配置和Docker定制三种高效加速方案,帮助开发者快速解决插件下载慢的问题。 阅读详情

LeetCode 344 —字符串的反转

LeetCode 344 题意

编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。
不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。
你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。

示例 1:
输入:[“h”,“e”,“l”,“l”,“o”]
输出:[“o”,“l”,“l”,“e”,“h”]
示例 2:
输入:[“H”,“a”,“n”,“n”,“a”,“h”]
输出:[“h”,“a”,“n”,“n”,“a”,“H”]

作者:力扣 (LeetCode)
链接:https://leetcode-cn.com/leetbook/read/top-interview-questions-easy/xnhbqj/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

分析题意:

  1. 输入是一个字符数组 char [] s形式给出,输出也是通过char [] s形式给出;
  2. 方法的作用是将输入的字符数组反转过来;
  3. 不能给数组分配额外的空间,使用O(1)的空间复杂度
  4. 所有的字符都在ASCII码表中可以打印

Java全部解法

Solution 1

我们很容易想到通过一个中间数组对原来的数组进行反向赋值,定义一个字符数组 char [] t
对于第一个例子而言:
t0 = s4 = o
t1 = s3 = l
t2 = s2 = l
t3 = s1 = e
t4 = s0 = h
最后将字符数组t赋值给s,直接贴上代码

class Solution {
    public void reverseString(char[] s) {
    // 创建一个新的字符数组作为中间数组
       char [] result = new char [s.length];
        for (int i = 0; i < s.length ; i++) {
            result[i] = s[s.length - 1 -i];
        }
        // 最后将这个数组赋值给原数组
        for (int i = 0; i < s.length ; i++) {
            s[i] = result[i];
        }
    }
}

这种解法不符合题意,有一个中间数组的开销,空间复杂度为O(N),不满足题意O(1)的额外空间。

Solution 2

有一种很常用的方法,双指针法,满足一定条件下,通过首尾两个指针指向元素交换位置即可实现两个元素交换,比较抽象,
h e l l o
头指针 start 指向h ,尾指针指向o ,当头指针不超过尾指针的时候,就不用交换了即为start >= end。
直接附上代码

class Solution {
    public void reverseString(char[] s) {
    	// 定义首尾指针
       	int start = 0;
        int end = s.length - 1;
        while(start < end){
         // 交换对应位置上的元素
            char tmp = s[start];
            s[start] = s[end];
            s[end] = tmp;
            start ++ ;
            end --;
        }
    }
}

Solution 3

使用递归的方法,所有的循环都可以使用递归实现。递归分为两步

  • 递归终止条件: start >= end
  • 如何自己调用自己 :实现逻辑为两个对应的位置元素交换实现反转

附上代码

class Solution {
    public void reverseString(char[] s) {
        recursion(0,s.length - 1,s);
    }
     public static void recursion(int left, int right , char [] s){
        // 递归条件
        if (left >= right) return;
        char tmp = s[left];
        s[left] = s[right];
        s[right] = tmp;
        recursion(left + 1,right -1,s);
    }
}

总结

  1. 双指针法是一种很常见的处理数组、链表、字符串、树等方法,涉及到元素比较的场合往往会用到此方法;
  2. 循环通常也可以用递归解决,递归需要找到终止条件和递归具体实现。
RK3588开发笔记-PCIE接口2.5G网卡RTL8125调试记录 在RK3588平台上调试2.5G网卡(Realtek RTL8125)时,我们会用到PCIE接口,这篇文章记录了从硬件连接、内核驱动到最终实现网络通信的整个调试过程,包括可能遇到的问题和解决方案。Realtek RTL8125是为高带宽需求设计的一款高性价比2.5G以太网控制器。它不仅提供了高达2.5Gbps的网络传输速率,还具备良好的节能特性、硬件卸载引擎和广泛的操作系统支持。无论是在家庭网络、企业NAS,还是游戏和云计算等场景中,RTL8125都能为用户提供更快速、更稳定的网络连接。 阅读详情

相关推荐

VTK学习(入门级教程,包括安装和使用)~持续更新中

说明:研究QT+VTK有段时间了,准备把学到的东西分享给大家,这篇博客以VS+QT+VTK为主进行展开学习的。

HXX904的博客 4759

day31【LeetCode力扣】344.反转字符串

编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组。修改输入数组**、使用 O(1) 的额外空间解决这一问题。不要给另外的数组分配额外的空间,你必须**纸上得来终觉浅,绝知此事要躬行。ok了,就到这里叭~~~

canGfly的博客 696

飞腾D2000开发板实战:手把手教你为UEFI/EDK2驱动SD3077 RTC时钟芯片

本文详细介绍了在飞腾D2000开发板上为UEFI/EDK2环境驱动SD3077 RTC时钟芯片的全流程开发指南。从硬件连接到软件适配,包括引脚复用配置、电源管理优化以及UEFI驱动的深度定制,帮助开发者解决嵌入式系统中的时间同步问题,确保RTC芯片的稳定性和准确性。

weixin_30892037的博客 425

【简单】力扣算法题解析LeetCode344:反转字符串

LeetCode 344题要求原地反转字符数组,核心是通过双指针法(首尾交换)实现。需满足空间复杂度O(1)和时间复杂度O(n)。解法初始化左右指针,循环交换字符直至相遇,处理了奇偶长度和边界情况。Java代码使用临时变量交换元素,移动指针直至完成,确保原地修改。关键词: 双指针、原地反转、字符数组、时间复杂度O(n)、空间复杂度O(1)

ylumwd的博客 1143

Rope DFM一键整合包AI脸部替换教程:使用DeepFaceLab模型实现专业级视频和直播脸部替换

在AI脸部替换工具中,Rope凭借其出色的自动遮罩处理拔得头筹,结合DFM模型中的DFL XSeg遮罩处理,效果更是提升了一个台阶。因为在训练模型时,它已经通过大量的侧脸图片进行训练,达到了单张图片无法企及的效果。然而,想要通过DeepFaceLab获得专业级的效果,不仅难度大,时间成本也相当高,训练模型也是个不小的挑战。举个简单的例子,使用图片脸部替换时,如果佩戴眼镜,脸部替换后的可能会显得很假。另外,在视频中,比如歌手演唱时,话筒遮挡住脸部,这种场景也可以通过遮罩训练后的模型来处理,呈现出更逼真的效果。

m0_72580657的博客 8166

HALCON机器视觉之结合LMI Gocator 5504进行手机折叠屏异物、折痕和胶体检测(基于C# + HALCON)

手机折叠屏是一种创新的屏幕技术,它允许屏幕在一定程度上进行折叠,从而在便携性和屏幕尺寸之间取得平衡。这种屏幕通常由多层材料组成,包括柔性显示层、保护层和胶水层等。本文将详细介绍如何使用C#编程语言,结合HALCON和LMI Gocator 5504来实现手机折叠屏的异物、折痕和胶体检测。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 9322

力扣344. 反转字符串

力扣344. 反转字符串 https://leetcode-cn.com/problems/reverse-string/ 编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。 不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。 你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。 ...

小麦China的博客 328

cesium 淹没分析

cesium淹没分析

God's asylum的博客 483

LeetCode-344反转字符串--力扣官网第344题(出现频率高)

Java实现反转字符串

qq_53915616的博客 334

CE电流法测试中的dBμV负值解析

传导发射(CE)电流法测试中出现的dBμV负值现象表明被测设备干扰电平低于1μV参考基准。这源于对数计算特性(小于1μV的电压转换后为负值)、设备优良的EMC设计(如滤波效果显著)及测试环境的影响(LISN隔离、屏蔽室低噪声)。负值虽不代表实际负电压,但反映干扰水平优于标准限值,为系统集成预留电磁裕度。工程应用中需结合设备灵敏度、环境背景噪声等因素综合分析,避免误判,这类数据可用于评估EMI设计冗余度。

硬核科技 298

Sqlserver2012评估期已过问题解决(启动数据库服务报错1705都是同样的问题,数据库过期未激活)

一、背景: 因为之前安装sqlserver2012忘记输入序列号,如今出现评估期已过的问题,前几天忙活半天,才解决,发现网 上叙述都非常凌乱,并且仅仅有大意,有的非常难操作。所以把我操作的过程和大家交流分享: 一定要有序列号的输入。不然会有很多其它的麻烦出现: 二、问题解决: 第一步:进入SQL2012配置工具中的安装中心。 第二步:再进入左側维护选项界面,然后选择选择版本号升级。 ...

堂前燕的博客 3269

【Java力扣算法】LeetCode 344 反转字符串

题目: 编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组char[]的形式给出。 不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。 你可以假设数组中的所有字符都是ASCII码表中的可打印字符。 示例 1: 输入:["h","e","l","l","o"] 输出:["o","l","l","e","h"] 示例 2...

懂技术的猫 801

IgH EtherCAT 从入门到精通:第 5 章 多主站与系统集成配置

本文介绍了 EtherCAT 多主站配置与系统集成方法。主要内容包括: 多主站实例配置原理:通过内核模块参数指定多个主站设备,每个主站独立管理一条 EtherCAT 总线,最多支持32个主站实例。 配置文件详解:在/etc/ethercat.conf中通过MASTER<X>_DEVICE变量定义各主站绑定的网卡或MAC地址,支持冗余备份配置。 系统服务集成:提供了systemd服务单元文件和传统init.d脚本两种方式实现开机自启动和管理,并建议通过override文件定制服务依赖关系。 架构示

从事嵌入式linux android驱动开发,拥有全栈能力 355

344.力扣LeetCode_反转字符串

摘要:该代码通过双指针对称交换实现字符串反转。使用left和right两个指针从字符串两端向中间移动,每次循环交换左右指针指向的字符,直至指针相遇完成反转。核心操作是将左字符暂存temp,右字符赋给左位置,再将temp赋给右位置,同时移动指针。时间复杂度O(n),空间复杂度O(1)。注释版详细说明了参数含义和指针移动逻辑。

2401_82472941的博客 180

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

LeetCode 344: 反转字符串

这道题的目标是反转一个字符数组(字符串)。我们将通过双指针法来实现这一功能。

weixin_48941116的博客 1301

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

C++ LeetCode 力扣刷题 344. 反转字符串

编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组s的形式给出。不要给另外的数组分配额外的空间,你必须、使用 O(1) 的额外空间解决这一问题。

weixin_73793168的博客 944

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

LeetCode 344. 反转字符串

LeetCode 344. 反转字符串题目描述思路第一种python代码第二种python代码 题目描述 编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。 不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。 你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。 示例 1: 输入:[“h”,“e”...

qq_41854710的博客 119

344. 反转字符串(力扣LeetCode)

不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。输入:s = [“H”,“a”,“n”,“n”,“a”,“h”]输入:s = [“h”,“e”,“l”,“l”,“o”]输出:[“h”,“a”,“n”,“n”,“a”,“H”]输出:[“o”,“l”,“l”,“e”,“h”]

m0_73841621的博客 734

力扣第344.反转字符串

​力扣344. 反转字符串的Python3解答

weixin_47337647的博客 567

leetcode344----反转字符串

344. 反转字符串 - 力扣(LeetCode)编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组s的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。示例 1:示例 2:在 C++ 中,reverse是STL(标准模板库)算法中的一个函数,定义在头文件中。它用于反转容器(如std::array)或 C++ 数组的元素顺序。first:指向要反转范围的起始位置(包含last:指向要反转范围的结束位置(不包含反转。

xinxin的博客 1131

LeetCode 力扣 344. 反转字符串 reverseString 递归、非递归

大家觉得写还可以,可以点赞、收藏、关注一下吧! 也可以到我的个人博客参观一下,估计近几年都会一直更新!和我做个朋友吧!https://motongxue.cn 文章目录344. 反转字符串题目描述示例 1:示例 2:分析代码迭代版本递归版本(重点学习)提交结果 344. 反转字符串 题目描述 编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。 不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。 你可以假设数组中的所有

motongxue的博客 289

Leetcode 344.反转字符串

Leetcode 344.反转字符串 反转字符串 编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。 不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。 你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。 示例 1: 输入:[“h”,“e”,“l”,“l”,“o”] 输出:[“o”,“l”,“l”,“e”,“h”] 示例 2: 输入:[“H”,“a”,“n”,“n”,“a”,“h”] 输出:[“h”,

EIUC_Thread的博客 154

Leetcode 344 反转字符串

Leetcode 344 反转字符串 题目描述: 编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。 不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。 示例 1: 输入:s = ["h","e","l","l","o"] 输出:["o","l","l","e","h"] 示例 2: 输入:s = ["H","a","n","n","a","h"] 输出:["h","a","n","n","a","H"] 代码: 解法1:

周泡泡同学的博客 221

算法学习——LeetCode力扣字符串篇(344. 反转字符串、541. 反转字符串 II、151. 反转字符串中的单词、28. 找出字符串中第一个匹配项的下标、459. 重复的子字符串)

算法学习——LeetCode力扣字符串篇(344. 反转字符串、541. 反转字符串 II、151. 反转字符串中的单词、28. 找出字符串中第一个匹配项的下标、459. 重复的子字符串)

拉依达不拉跨的博客 1511

LeetCode第344题_反转字符串

本文解析LeetCode第344题"反转字符串",提供了双指针和递归两种解法及C#、Python、C++实现。双指针法通过从两端向中间交换字符实现O(n)时间复杂度和O(1)空间复杂度的原地算法,递归法则展现优雅代码但空间复杂度较高。文章包含详细步骤分析、性能对比(C++最快)、常见错误提示及相关题目推荐,适合初学算法的开发者掌握字符串反转核心技巧。

qq_40263592的博客 1122

双指针算法 | 力扣344. 反转字符串

本文讲解力扣344. 反转字符串问题 也就是使用双指针的思想 很简单的一道题 1 题目 编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。 不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题 你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。 2 示例 3 思路分析 使用 前后双指针;L 在首位; R 在 尾部 L R 指向的字符串交换位置; 随后 L 后移,R 前移;继续交换 重复上.

比特的一天 380
上一篇: 《剑指offer》之——单链表的翻转
下一篇: Leetcode-007-整数反转
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值