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

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

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

相关文章

认识一些分布函数-Frechet分布及其应用

1. 何为Frechet分布 Frechet分布也称为极值分布(EVD)类型II,用于对数据集中的最大值进行建模。它是四种常用极值分布之一。另外三种是古贝尔分布、威布尔分布和广义极值分布(Gumbel Distribution, the Weibull Distribution and the Generalized Extreme Value Distributi…

MyBatis-PageHelper 源码解说

归档 GitHub: MyBatis-PageHelper-源码解说 总说明 源码仓库&#xff1a; https://github.com/pagehelper/Mybatis-PageHelper克隆&#xff1a;git clone https://github.com/pagehelper/Mybatis-PageHelper.git切分支&#xff08;tag&#xff09;&#xff1a;git checkout m…

亿达中国武汉园区入选“武汉市科技金融工作站”及“武汉市线下首贷服务站”

近日&#xff0c;武汉市2024科技金融早春行活动在深交所湖北资本市场培育基地举行。会上&#xff0c;第四批武汉市科技金融工作站试点单位名单及第五批武汉地区金融系统线下首贷服务站名单正式公布&#xff0c;武汉软件新城成功入选上述两个名单。 为缓解科技型企业融资难题&a…

vue2+echarts实现简易的2d地图效果

背景 公司的一个可视化数据大屏里面&#xff0c;有一个使用echarts实现的2d地图。不是我开发的&#xff0c;在此记录一下实现过程以及一些扩展解构。应该是从哪个航空航线图改动了一下&#xff0c;效果看起来还是可以的。 效果预览 版本 vue版本使用的是"^2.6.12"…

TypeScript中的数组类型

数组类型 目录 数组类型 目录自动推断类型配置只读数组多维数组 自动推断 不定义类型&#xff0c;推断为never let array []; //never推断为字符串数组 const akun [akun.com, akun001] //const akun : string[] hd.push(100) //因为类型不允许&#xff0c;所以报错推断…

我要成为算法高手-双指针篇

目录 什么是双指针?问题1&#xff1a;移动零问题2&#xff1a;复写零问题3&#xff1a;快乐数问题4&#xff1a;盛最多水的容器问题5&#xff1a;有效三角形个数问题6&#xff1a;查找总价格和为目标值的两个商品(两数之和)问题7&#xff1a;三数之和问题8&#xff1a;四数之和…

Linux中“计划任务”设置以及补充

目录 一、关闭防火墙 &#xff08;1&#xff09;关闭防火墙 &#xff08;2&#xff09;关闭防火墙2 &#xff08;3&#xff09;关闭selinux 二、安装 php 第一步&#xff1a;yum源 第二步&#xff1a;下载php 第三步&#xff1a;启动php 第四步&#xff1a; 检查php是…

web前端开发前途:探索、挑战与无限可能

web前端开发前途&#xff1a;探索、挑战与无限可能 在数字化浪潮席卷全球的今天&#xff0c;Web前端开发作为连接技术与用户的桥梁&#xff0c;其前途无疑充满了探索、挑战与无限可能。本文将从四个方面、五个方面、六个方面和七个方面&#xff0c;深入剖析Web前端开发的前途&…

私域流量新利器:大模型+智慧客服+知识智能多管齐下,效果倍增!

前言 随着互联网环境的发展&#xff0c;线上市场竞争日益激烈&#xff0c;越来越多的企业开始关注私域流量的运营和管理——将品牌的用户数据在品牌官网、微信公众号、APP等自有平台上进行管理和运营&#xff0c;通过与用户建立深入的关系和互动&#xff0c;提升用户黏性、增强…

LNMP搭建:Linux+Nginx+MySQL+PHP

关闭防火墙和核心防护&#xff0c;使用一台机器Node1搭建LNMP systemctl stop firewalld; setenforce 0 所需源码包&#xff1a;可以去官网下载 编译Nginx 创建/data&#xff0c;在/data/下放源码包 [rootNode1 ~]#:mkdir /data;cd /data 安装依赖包 [rootNode1 data]#:yum …

利用STM32F103驱动舵机的指南(使用HAL库)

利用STM32F103驱动舵机的指南&#xff08;使用HAL库&#xff09; 舵机是一种常用的执行器&#xff0c;可以在机器人、遥控模型、自动化装置等项目中用来进行角度控制。本文将介绍如何利用STM32F103微控制器&#xff0c;通过HAL库来驱动舵机。 硬件准备 STM32F103开发板&…

第一个SpringBoot程序

第一个SpringBoot程序 目录介绍 当我们创建了一个SpringBoot项目之后&#xff0c;会出现如下的目录结构 SpringBoot项⽬有两个主要的⽬录&#xff1a; src/main/java: Java源代码 src/main/resources:为静态资源或配置⽂件&#xff1a; /static&#xff1a;静态资源⽂件夹,⽐…

Spring Cloud Netflix 之 Ribbon

前言 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家&#xff1a;https://www.captainbed.cn/z ChatGPT体验地址 文章目录 前言前言1、负载均衡1.1、服务端负载均衡1.2、客户端负载均衡 2、Ribbon实现服务…

python 多线程条件竞争利用失败print不显示的原因

如下脚本&#xff0c;利用php的PHP_SESSION_UPLOAD_PROGRESS条件竞争漏洞执行一直着没反应&#xff1a; import requests import threading import syssession requests.session() sess zzx url1 "http://192.168.50.162/a.php" flag # file后为phpsession的路径 …

大模型企业落地:制造业可以选择的应用场景

前言 在当今制造业快速发展的背景下&#xff0c;设备稳定运行对于企业的发展至关重要。然而&#xff0c;传统的设备维修模式已无法满足现代企业的需求。为此&#xff0c;引入智能化、数字化的设备维修解决方案成为必然趋势。本文将探讨如何利用大模型技术&#xff0c;构建企业…

智慧工厂人员定位系统的影响与前景展望

随着科技的不断发展&#xff0c;智能制造正在迅速崛起&#xff0c;而智慧工厂人员定位系统作为其中的重要组成部分&#xff0c;正在改变传统制造业的面貌。这一系统通过利用物联网、室内定位等技术手段&#xff0c;能够实时准确地追踪和监控工厂内人员的位置。那么&#xff0c;…

车路协同,大模型擂台赛,AI的新知识处理,AI与医学的未来

一支烟花社区官网&#xff1a;(更多内容) https://agifun.love 智源社区 车路协同多智能体协作大牛齐聚&#xff0c;ECCV24「协同智能」Workshop开启征稿啦 coop-intelligence 投稿量子位 | 公众号 QbitAI近年来&#xff0c;具身智能&#xff08;如自动驾驶和机器人等自主智…

数据采集项目2-业务数据同步

全量同步 每天都将业务数据库中的全部数据同步一份到数据仓库 全量同步采用DataX datax datax使用 执行 python /opt/module/datax/bin/datax.py /opt/module/datax/job/job.json 更多job.json配置文件在&#xff1a; 生成的DataX配置文件 java -jar datax-config-genera…

linux C语言 pthread多线程11错误 卡死

pthread新手坑&#xff0c;跟着网上直接写&#xff0c;pthread_create然后就让函数跑&#xff0c;跑完了直接在函数里面return。这个流程&#xff0c;小测试&#xff0c;一点毛病都没有&#xff0c;跑得贼溜。 但是客户拿去压测七天后&#xff0c;出现卡死的现象。分析后&…

Vue3 之 Pinia 核心概念(八)

核心概念 State&#xff1a;这是你的应用程序的状态&#xff0c;是一个响应式的对象。 Getters&#xff1a;类似于 Vuex 中的 getters&#xff0c;它们是基于 state 的计算属性。 Actions&#xff1a;类似于 Vuex 中的 mutations 和 actions&#xff0c;它们用于改变 state。但…