Day46 反转字符串

I.


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

在这里插入图片描述

class Solution {public void reverseString(char[] s) {int i = 0, j = s.length - 1;while (i < j) {char temp = s[i];s[i] = s[j];s[j] = temp;i++;j--;}}
}

时间复杂度:O(n)

空间复杂度:O(1)

II.


给定一个字符串 s 和一个整数 k,从字符串开头算起,每计数至 2k 个字符,就反转这 2k 字符中的前 k 个字符。
如果剩余字符少于 k 个,则将剩余字符全部反转。
如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。

在这里插入图片描述

class Solution {public String reverseStr(String s, int k) {// 将字符串转换为字符数组,以便可以修改字符char[] arr = s.toCharArray();// 每次处理2k个字符,所以i每次增加2kfor (int i = 0; i < arr.length; i += 2 * k) {// 反转前k个字符int left = i;int right = Math.min(i + k - 1, arr.length - 1);while (left < right) {char temp = arr[left];arr[left] = arr[right];arr[right] = temp;left++;right--;}}return new String(arr);}
}

时间复杂度: O(n),其中 n 是字符串的长度,因为我们只遍历了一次字符串,并在每次处理时执行常数时间的反转操作。

空间复杂度: O(n),用于存储字符数组。

III.


给定一个字符串 s ,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。

在这里插入图片描述

class Solution {public String reverseWords(String s) {char[] arr = s.toCharArray();int left = 0;for (int i = 0; i < arr.length; i++) {if (arr[i] == ' ') {reverse(arr, left, i - 1);left = i + 1;}if (i == arr.length - 1) {reverse(arr, left, i);}}return new String(arr);}public void reverse(char[] arr, int left, int right) {while (left < right) {char temp = arr[left];arr[left] = arr[right];arr[right] = temp;left++;right--;}}
}

时间复杂度: O(n),其中 n 是字符串的长度。我们只遍历了字符数组一次,并在遍历过程中执行了常数时间的反转操作。

空间复杂度: O(n),用于存储字符数组 arr,以及 new String(arr)。

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

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

相关文章

用FileZilla Server 1.9.4给Windows Server 2025搭建FTP服务端

FileZilla Server 是一款免费的开源 FTP 和 FTPS 服务器软件&#xff0c;分为服务器版和客户端版。服务器版原本只支持Windows操作系统&#xff0c;比如笔者曾长期使用过0.9.60版&#xff0c;那时候就只支持Windows操作系统。当时我们生产环境对FTP稳定性要求较高&#xff0c;比…

【愚公系列】《Python网络爬虫从入门到精通》033-DataFrame的数据排序

标题详情作者简介愚公搬代码头衔华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,亚马逊技领云博主,51CTO博客专家等。近期荣誉2022年度…

营销过程乌龟图模版

营销过程乌龟图模版 输入 公司现状产品服务客户问询客户期望电话、电脑系统品牌软件硬件材料 售前 - 沟通 - 确定需求 - 满足需求 - 售后 机料环 电话、电脑等设备软件硬件、系统品牌等工具材料 人 责任人协助者生产者客户 法 订单由谁评审控制程序营销过程控制程序顾客满意度…

Kubernetes (K8S) 高效使用技巧与实践指南

Kubernetes&#xff08;K8S&#xff09;作为容器编排领域的核心工具&#xff0c;其灵活性和复杂性并存。本文结合实战经验&#xff0c;从运维效率提升、生产环境避坑、核心功能应用等维度&#xff0c;总结高频使用技巧与最佳实践&#xff0c;分享如何快速掌握 K8S。 一、kubect…

Idea java项目结构介绍

一般来说&#xff0c;一个典型的 IntelliJ IDEA Java 项目具有特定的结构&#xff0c;以下是对其主要部分的介绍&#xff1a; 项目根目录 项目的最顶层目录&#xff0c;包含了整个项目的所有文件和文件夹&#xff0c;通常以项目名称命名。在这个目录下可以找到.idea文件夹、.g…

C++大整数类的设计与实现

1. 简介 我们知道现代的计算机大多数都是64位的&#xff0c;因此能处理最大整数为 2 64 − 1 2^{64}-1 264−1。那如果是超过了这个数怎么办呢&#xff0c;那就需要我们自己手动模拟数的加减乘除了。 2. 思路 我们可以用一个数组来存储大数&#xff0c;数组中的每一个位置表…

2024年第十五届蓝桥杯大赛软件赛省赛Python大学A组真题解析

文章目录 试题A: 拼正方形(本题总分:5 分)解析答案试题B: 召唤数学精灵(本题总分:5 分)解析答案试题C: 数字诗意解析答案试题A: 拼正方形(本题总分:5 分) 【问题描述】 小蓝正在玩拼图游戏,他有7385137888721 个2 2 的方块和10470245 个1 1 的方块,他需要从中挑出一些…

开源RAG主流框架有哪些?如何选型?

开源RAG主流框架有哪些?如何选型? 一、开源RAG框架全景图 (一)核心框架类型对比 类型典型工具技术特征适用场景传统RAGLangChain, Haystack线性流程(检索→生成)通用问答、知识库检索增强型RAGRAGFlow, AutoRAG支持重排序、多路召回优化高精度问答、复杂文档处理轻量级…

Java SE与Java EE

Java SE&#xff08;Java 平台标准版&#xff09; Java SE 是 Java 平台的核心&#xff0c;提供了 Java 语言的基础功能。它包含了 Java 开发工具包&#xff08;JDK&#xff09;&#xff0c;其中有 Java 编译器&#xff08;javac&#xff09;、Java 虚拟机&#xff08;JVM&…

【Java企业生态系统的演进】从单体J2EE到云原生微服务

Java企业生态系统的演进&#xff1a;从单体J2EE到云原生微服务 目录标题 Java企业生态系统的演进&#xff1a;从单体J2EE到云原生微服务摘要1. 引言2. 整体框架演进&#xff1a;从原始Java到Spring Cloud2.1 原始Java阶段&#xff08;1995-1999&#xff09;2.2 J2EE阶段&#x…

kicad中R树的使用

在 KiCad 中&#xff0c;使用 R树&#xff08;R-tree&#xff09;进行空间索引和加速查询通常不在用户层面直接操作&#xff0c;而是作为工具的一部分用于优化电路板设计的性能&#xff0c;尤其在布局、碰撞检测、设计规则检查&#xff08;DRC&#xff09;以及元件搜索等方面。…

org.springframework.boot不存在的其中一个解决办法

最近做项目的时候发现问题&#xff0c;改了几次pom.xml文件之后突然发现项目中的注解全部爆红。 可以尝试点击左上角的循环小图标&#xff0c;同步所有maven项目。 建议顺便检查一下Project Structure中的SDK和Language Level是否对应&#xff0c;否则可能报类似&#xff1a;“…

C语言实现通讯录项目

一、通讯录功能 实现一个可以存放100个人的信息的通讯录&#xff08;这里采用静态版本&#xff09;&#xff0c;每个人的信息有姓名、性别、年龄、电话、地址等。 通讯录可以执行的操作有添加联系人信息、删除指定联系人、查找指定联系人信息、修改指定联系人信息、显示联系人信…

HO3D_v3(handposeX-json 格式)数据集-release >> DataBall

注意&#xff1a; 1)为了方便使用&#xff0c;按照 handposeX json 自定义格式存储 2)使用常见依赖库进行调用,降低数据集使用难度。 3)部分数据集获取请加入&#xff1a;DataBall-X数据球(free) 4)完整数据集获取请加入&#xff1a;DataBall-X数据球(vip) HO3D 数据集官方…

Java线程池入门04

1. 提交任务的两种方式 executorsubmit 2. executor executor位于Executor接口中 public interface Executor {void executor(Runnable command); }executor提交的是无返回值的任务 下面是一个具体的例子 package LearnThreadPool; import java.util.concurrent.ExecutorSe…

2025-02-26 学习记录--C/C++-C语言 整数格式说明符

合抱之木&#xff0c;生于毫末&#xff1b;九层之台&#xff0c;起于累土&#xff1b;千里之行&#xff0c;始于足下。&#x1f4aa;&#x1f3fb; C语言 整数格式说明符 【例如 】&#x1f380; &#xff1a;在 C 语言中&#xff0c;%ld 是 printf 或 scanf 等格式化输入输出函…

【QT 一 | 信号和槽】

Qt5基本模块 Qt Creator 中的快捷键 • 注释&#xff1a;ctrl / • 运⾏&#xff1a;ctrl R • 编译&#xff1a;ctrl B • 字体缩放&#xff1a;ctrl 鼠标滑轮 • 查找&#xff1a;ctrl F • 整行移动&#xff1a;ctrl shift ⬆/⬇ • 帮助⽂档&#xff1a;F1 • 自动…

集成学习方法之随机森林

随机森林是一种集成学习算法&#xff0c;它基于决策树模型&#xff0c;通过构建多个决策树并将它们的预测结果进行组合&#xff0c;以提高模型的准确性和稳定性。以下是随机森林的详细介绍&#xff1a; 原理 随机森林通过从原始训练数据中有放回地随机抽样&#xff0c;生成多…

react 中,使用antd layout布局中的sider 做sider的展开和收起功能

一 话不多说&#xff0c;先展示效果&#xff1a; 展开时&#xff1a; 收起时&#xff1a; 二、实现代码如下 react 文件 import React, {useState} from react; import {Layout} from antd; import styles from "./index.module.less"; // 这个是样式文件&#…

【Java 基础】-- Java 接口中的 @Public 和 @FunctionalInterface 注解详解

目录 Java 接口中的 Public 和 FunctionalInterface 注解详解 1. 概述 2. Public 注解的作用 3. Public 注解的使用 3.1 基本使用方式 3.2 应用于类和方法 4. FunctionalInterface 注解的作用 4.1 主要作用 4.2 FunctionalInterface 使用示例 4.3 允许默认方法 5. Pu…