4-字符串-11-反转字符串-LeetCode344

news2025/2/22 19:45:28

4-字符串-11-反转字符串-LeetCode344

LeetCode: 题目序号344

更多内容欢迎关注我(持续更新中,欢迎Star✨)

Github:CodeZeng1998/Java-Developer-Work-Note

技术公众号:CodeZeng1998(纯纯技术文)

生活公众号:好锅(Life is more than code)

CSDN: CodeZeng1998

其他平台:CodeZeng1998好锅

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 <= s.length <= 105
  • s[i] 都是 ASCII 码表中的可打印字符
    /**
     * 反转字符串(双指针)
     *
     * @param s 待反转的字符串
     * @author CodeZeng1998
     */
    public void reverseString(char[] s) {

        int left = 0;
        int right = s.length - 1;

        while (left <= right) {
            char tempChar = s[right];
            s[right] = s[left];
            s[left] = tempChar;

            left++;
            right--;
        }
    }

ChatGPT:

该代码实现了一个字符串反转的功能。输入是一个字符数组 s,函数将该数组原地反转,即不使用额外的空间,将字符顺序颠倒。

1. 初始化指针: 代码首先初始化了两个指针:

  • left 指针从数组的起始位置开始,初始值为 0
  • right 指针从数组的末尾位置开始,初始值为 s.length - 1

2. 进入循环: 使用一个 while 循环,当 left 指针小于或等于 right 指针时,循环继续执行。这个条件确保了指针从两端向中间移动,直到相遇或交错。

3. 交换字符: 在每次循环迭代中,代码执行以下步骤:

  • 暂存字符:将 right 指针对应的字符暂存在一个临时变量 tempChar 中。
  • 交换字符:将 left 指针对应的字符赋值给 right 指针对应的位置。
  • 恢复字符:将 tempChar 中暂存的字符赋值给 left 指针对应的位置。

4. 移动指针: 交换完字符后,移动两个指针:

  • 左指针右移:将 left 指针加一,向右移动一位。
  • 右指针左移:将 right 指针减一,向左移动一位。

5. 循环结束:left 指针大于 right 指针时,表示所有字符都已经交换完毕,整个数组实现了原地反转。

6. 示例过程: 假设输入字符数组为 ['h', 'e', 'l', 'l', 'o']

  • 初始状态:left = 0right = 4,字符数组为 ['h', 'e', 'l', 'l', 'o']
  • 第一次迭代:交换 s[0]s[4],得到 ['o', 'e', 'l', 'l', 'h'],然后移动指针:left = 1right = 3
  • 第二次迭代:交换 s[1]s[3],得到 ['o', 'l', 'l', 'e', 'h'],然后移动指针:left = 2right = 2
  • 第三次迭代:由于 left 等于 right,交换 s[2]s[2],字符数组不变,得到 ['o', 'l', 'l', 'e', 'h'],然后移动指针:left = 3right = 1
  • 退出循环:此时 left 大于 right,循环结束,最终数组为 ['o', 'l', 'l', 'e', 'h'],字符串已被反转。

通过以上步骤,字符数组 s 中的字符顺序被原地反转,完成字符串反转的功能。

344. Reverse String

Write a function that reverses a string. The input string is given as an array of characters s.

You must do this by modifying the input array in-place with O(1) extra memory.

Example 1:

Input: s = ["h","e","l","l","o"]
Output: ["o","l","l","e","h"]

Example 2:

Input: s = ["H","a","n","n","a","h"]
Output: ["h","a","n","n","a","H"]

Constraints:

  • 1 <= s.length <= 105
  • s[i] is a printable ascii character.

在这里插入图片描述

上图由 Pic 生成

关键词:Near is a desert, far is a snowy mountain

更多内容欢迎关注我(持续更新中,欢迎Star✨)

Github:CodeZeng1998/Java-Developer-Work-Note

技术公众号:CodeZeng1998(纯纯技术文)

生活公众号:好锅(Life is more than code)

CSDN: CodeZeng1998

其他平台:CodeZeng1998好锅

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1824974.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【牛客面试必刷TOP101】Day32.BM68 矩阵的最小路径和和BM69 把数字翻译成字符串

文章目录 前言一、BM68 矩阵的最小路径和题目描述题目解析二、BM69 把数字翻译成字符串题目描述题目解析总结 前言 一、BM68 矩阵的最小路径和 题目描述 描述&#xff1a; 给定两个字符串str1和str2&#xff0c;输出两个字符串的最长公共子序列。如果最长公共子序列为空&#x…

Ubuntu系统环境配置

Ubuntu安装terminator以及美化 安装 sudo apt-get install terminator美化 修改或者创建.config/terminator/config文件&#xff0c;添加如下配置 [global_config]suppress_multiple_term_dialog Truetitle_font Sans 11title_use_system_font False [keybindings] [lay…

supOS助力中核陕西铀浓缩有限公司迈向智能化、数字化、绿色化

中核陕西铀浓缩有限公司是中国核工业集团有限公司所属大型生产骨干企业&#xff0c;建于1969年10月&#xff0c;是我国第一座采用离心法生产浓缩铀的工厂。 蓝卓基于supOS工业操作系统&#xff0c;以“三化一平台一基础”的顶层架构&#xff0c;面向陕铀公司工艺优化、设备管理…

【Photoshop】PS修改文字内容

Photoshop(PS)修改图片上文字内容&#xff0c;网上教材不少&#xff0c;本人整理实践过的方法&#xff0c;分享给各位。本人实践方法&#xff1a; 内容识别填充&#xff1a;适用于背景色复杂的图片内容修补工具&#xff1a;适用于背景色为纯色的图片 方式一&#xff1a;内容识…

el-table表头文字换行或者修改字体颜色样式

例如 <el-table:data"tableData":header-cell-style"headClass" style"width: 100%;" border ><el-table-columnprop"address"label"生产工序"align"center"></el-table-column> //重点看这里…

uniapp 开发版小程序之间跳转

uni.navigateToMiniProgram({appId: urL,path: patH,envVersion: release,//我使用develop会给我返回&#xff1a;开发版小程序已过期&#xff0c;请在开发者工具重新扫码确定success(res) {console.log(res);// 打开成功uni.showToast({title: 跳转成功})},fail(err) {console…

希亦、追觅、云鲸洗地机:究竟有何不同?选择哪款更合适

最近收到很多私信里&#xff0c;要求洗地机测评的呼声特别高&#xff0c;作为宠粉的测评博主&#xff0c;当然是马上安排起来&#xff0c;满足大家对想看洗地机的愿望。这次洗地机测评&#xff0c;我挑选了三款热门的品牌型号&#xff0c;并从多个维度对它们进行使用测评&#…

【STM32】CubeIDE下载安装使用全记录

文章目录 0 前言1 下载安装2 基本使用2.0 编译下载2.1 字体和代码高亮设置2.2 快速格式化代码2.3 快速定位函数/变量的声明和定义2.4 设置代码折叠2.5 生成hex文件 3 设置代码自动提示4 设置中文界面5 遇到的问题和解决办法 0 前言 作为ST官方主推的集成开发环境&#xff08;ID…

深入浅出 Go 语言的 GPM 模型(Go1.21)

引言 在现代软件开发中&#xff0c;有效地利用并发是提高应用性能和响应速度的关键。随着多核处理器的普及&#xff0c;编程语言和框架如何高效、简便地支持并发编程&#xff0c;成为了软件工程师们评估和选择工具时的一个重要考量。在这方面&#xff0c;Go 语言凭借其创新的并…

单调栈——AcWing.830单调栈

单调栈 定义 单调栈是一种特殊的数据结构&#xff0c;栈内元素保持某种单调性&#xff08;通常是单调递增或单调递减&#xff09;。 运用情况 求解下一个更大元素或下一个更小元素。计算每个元素左边或右边第一个比它大或小的元素。 注意事项 要明确单调栈是递增还是递减…

七、IP路由原理和路由引入

目录 一、IP路由原理 二、路由引入 2.1、双点双向路由引入 2.2、路由回灌 三、路由策略与路由控制 路由匹配工具&#xff08;规则&#xff09; ACL IP前缀列表 路由控制工具&#xff08;控制&#xff09; 策略工具1 策略工具2 搭配组合 组…

CCAA质量管理【学习笔记】​ 备考知识点笔记(一)

第一部分 质量管理体系相关标准 《质量管理体系基础考试大纲》中规定的考试内容&#xff1a; 3.1质量管理体系标准 a) 了解 ISO 9000 系列标准发展概况&#xff1b; b) 理 解 GB/T19000 标准中涉及的基本概念和质量管理原则&#xff1b; c) 理 解GB/T19000 标准中的部分…

mybatis中SQL语句运用总结

union 连接查询 连接两个表后会过滤掉重复的值 <resultMap id"BaseResultMap" type"com.sprucetec.pay.etl.model.BillDetail"><id column"id" jdbcType"INTEGER" property"id"/><result column"pay_…

Docker中部署Jenkins+Pipline流水线基础语法入门

场景 DockerCompose中部署Jenkins&#xff08;Docker Desktop在windows上数据卷映射&#xff09;&#xff1a; DockerCompose中部署Jenkins&#xff08;Docker Desktop在windows上数据卷映射&#xff09;-CSDN博客 DockerComposeJenkinsPipeline流水线打包SpringBoot项目(解…

深度剖析淘宝扭蛋机源码:打造趣味性电商活动的秘诀

在当今电商市场中&#xff0c;如何吸引用户的注意力、提升用户的参与度成为了各大电商平台竞相追求的目标。淘宝扭蛋机作为一种新型的电商活动形式&#xff0c;以其趣味性和互动性深受用户喜爱。本文将深度剖析淘宝扭蛋机源码&#xff0c;探讨其如何打造趣味性与互动性并存的电…

数仓建模—OLTP 和 OLAP

数仓建模—OLTP 和 OLAP 前面我们在数仓建模—数仓初识 中提到了OLTP 和 OLAP 两个概念 OLAP 是 On-Line Analytical Processing(联机分析处理)的缩写。广义的 OLAP 泛指数据查询分析,像报表、即席查询、多维分析都属于 OLAP 的范畴。 OLTP 和 OLAP 最大区别在于前者会产…

C++入门 vector介绍及使用

目录 vector的介绍及使用 vector常用接口的介绍及使用 vector的定义 vector iterator 的使用 vector 空间增长问题 vector 增删查改 push_back/pop_back insert & erase & find operator[ ]的遍历 vector的介绍及使用 vector的文档介绍 vector是表示可变大…

DevOps学习回顾01-技能发展路线-岗位能力-体系认知(射箭和拉弓的区别)

事为先&#xff0c;人为重–事在人为 参考来源&#xff1a; 极客时间专栏&#xff1a;DevOps实战笔记&#xff0c;作者&#xff1a;石雪峰 课程链接&#xff1a;https://time.geekbang.org/column/intro/235 时代的典型特征 VUCA VUCA 是指易变性&#xff08;Volatility&…

都说可视化设计是面向B端的点睛之笔,看到这些,我信了。

抽象复杂的B端系统&#xff0c;如果用可视化图表/逻辑图表现处理来 &#xff0c;那对于系统来说绝对是画龙点睛之笔&#xff0c;大美B端工场带领大家感受一下。 图形可视化设计在B端系统中被认为是点睛之笔的理由如下&#xff1a; 1. 提升数据可理解性&#xff1a; B端系统通…

代码随想录——组合总和(Leetcode LCR81)

题目链接 回溯 class Solution {List<List<Integer>> res new ArrayList<List<Integer>>();List<Integer> list new ArrayList<Integer>();public List<List<Integer>> combinationSum(int[] candidates, int target) {b…