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

2024-06-16 00:36

本文主要是介绍4-字符串-11-反转字符串-LeetCode344,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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好锅

这篇关于4-字符串-11-反转字符串-LeetCode344的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1065025

相关文章

Java中String字符串使用避坑指南

《Java中String字符串使用避坑指南》Java中的String字符串是我们日常编程中用得最多的类之一,看似简单的String使用,却隐藏着不少“坑”,如果不注意,可能会导致性能问题、意外的错误容... 目录8个避坑点如下:1. 字符串的不可变性:每次修改都创建新对象2. 使用 == 比较字符串,陷阱满

使用C++实现链表元素的反转

《使用C++实现链表元素的反转》反转链表是链表操作中一个经典的问题,也是面试中常见的考题,本文将从思路到实现一步步地讲解如何实现链表的反转,帮助初学者理解这一操作,我们将使用C++代码演示具体实现,同... 目录问题定义思路分析代码实现带头节点的链表代码讲解其他实现方式时间和空间复杂度分析总结问题定义给定

IDEA编译报错“java: 常量字符串过长”的原因及解决方法

《IDEA编译报错“java:常量字符串过长”的原因及解决方法》今天在开发过程中,由于尝试将一个文件的Base64字符串设置为常量,结果导致IDEA编译的时候出现了如下报错java:常量字符串过长,... 目录一、问题描述二、问题原因2.1 理论角度2.2 源码角度三、解决方案解决方案①:StringBui

C#从XmlDocument提取完整字符串的方法

《C#从XmlDocument提取完整字符串的方法》文章介绍了两种生成格式化XML字符串的方法,方法一使用`XmlDocument`的`OuterXml`属性,但输出的XML字符串不带格式,可读性差,... 方法1:通过XMLDocument的OuterXml属性,见XmlDocument类该方法获得的xm

Spring IOC控制反转的实现解析

《SpringIOC控制反转的实现解析》:本文主要介绍SpringIOC控制反转的实现,IOC是Spring的核心思想之一,它通过将对象的创建、依赖注入和生命周期管理交给容器来实现解耦,使开发者... 目录1. IOC的基本概念1.1 什么是IOC1.2 IOC与DI的关系2. IOC的设计目标3. IOC

JSON字符串转成java的Map对象详细步骤

《JSON字符串转成java的Map对象详细步骤》:本文主要介绍如何将JSON字符串转换为Java对象的步骤,包括定义Element类、使用Jackson库解析JSON和添加依赖,文中通过代码介绍... 目录步骤 1: 定义 Element 类步骤 2: 使用 Jackson 库解析 jsON步骤 3: 添

Java 字符数组转字符串的常用方法

《Java字符数组转字符串的常用方法》文章总结了在Java中将字符数组转换为字符串的几种常用方法,包括使用String构造函数、String.valueOf()方法、StringBuilder以及A... 目录1. 使用String构造函数1.1 基本转换方法1.2 注意事项2. 使用String.valu

python修改字符串值的三种方法

《python修改字符串值的三种方法》本文主要介绍了python修改字符串值的三种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录第一种方法:第二种方法:第三种方法:在python中,字符串对象是不可变类型,所以我们没办法直接

JAVA中整型数组、字符串数组、整型数和字符串 的创建与转换的方法

《JAVA中整型数组、字符串数组、整型数和字符串的创建与转换的方法》本文介绍了Java中字符串、字符数组和整型数组的创建方法,以及它们之间的转换方法,还详细讲解了字符串中的一些常用方法,如index... 目录一、字符串、字符数组和整型数组的创建1、字符串的创建方法1.1 通过引用字符数组来创建字符串1.2

C#中字符串分割的多种方式

《C#中字符串分割的多种方式》在C#编程语言中,字符串处理是日常开发中不可或缺的一部分,字符串分割是处理文本数据时常用的操作,它允许我们将一个长字符串分解成多个子字符串,本文给大家介绍了C#中字符串分... 目录1. 使用 string.Split2. 使用正则表达式 (Regex.Split)3. 使用