LeetCode 面试经典150题 151.反转字符串中的单词

devtools/2024/10/18 13:03:40/

题目

给你一个字符串 s ,请你反转字符串中 单词 的顺序。

单词 是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的 单词 分隔开。

返回 单词 顺序颠倒且 单词 之间用单个空格连接的结果字符串。

注意:输入字符串 s中可能会存在前导空格、尾随空格或者单词间的多个空格。返回的结果字符串中,单词间应当仅用单个空格分隔,且不包含任何额外的空格。

思路

代码

class Solution {public String reverseWords(String s) {s = s.trim();int j = s.length() - 1, i = j;StringBuilder res = new StringBuilder();while (i >= 0) {while (i >= 0 && s.charAt(i) != ' ')i--;// 取子集 [i,j) 前闭后开,所以j+1res.append(s.substring(i + 1, j + 1) + " ");while (i >= 0 && s.charAt(i) == ' ')i--;j = i;}return res.toString().trim(); // 最后不要忘了去一下尾部的空格}
}

性能

时间复杂度o(n)

空间复杂度o(n)


http://www.ppmy.cn/devtools/126727.html

相关文章

Java中的异步编程:使用CompletableFuture提升并发性能

解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 引言 在现代应用程序中,响应速度和并发性能变得越来越重要。随着处理任务变得复杂,应用程序常常需要同时处理多个任务,这对系统资源和性能提出了严峻的挑战。在传统的阻塞式编程模型中,线程等待任务完成往往…

Java笔试03

线性结构是指数据元素之间存在一对一的线性关系的数据结构。 树 不属于线性结构。树是由节点组成的层次结构,每个节点可以有多于两个的子节点。 队列 属于线性结构。队列是一种先进先出(FIFO)的数据结构,元素之间存在一对一的…

【arcgis】ArcGIS中如何避免标注压盖要素

ArcGIS中如何避免标注压盖要素 在制图工作中,标注(Label)是传达地理信息的重要方式。然而,在复杂的地图上,标注容易出现压盖要素的情况,影响地图的美观性和信息的准确传达。ArcGIS提供了Maplex标注引擎&am…

windows scp 免密码文件传输

windows scp 免密码文件传输 scp 是基于ssh加密服务的一种文件传输方式,是常见的linux主机间文件传输方式,在windows中也是支持的。 配置目标: 两台windows主机间通过scp命令行传输文件梳理概念 客户端: 通过命令行实现文件传输…

建筑行业帮助中心:一站式解决方案,助力项目高效推进

在日新月异的建筑行业,信息的高效获取与技术的精准应用是推动项目顺利进行的两大核心要素。面对复杂多变的施工环境、不断更新的建筑法规以及日益增长的客户需求,构建一个全面、便捷的建筑行业帮助中心显得尤为重要。本文将深入探讨如何通过建筑行业帮助…

vue前端接包(axios)+ 前端导出excel(xlsx-js-style)

// 先在请求处加上: responseType: arraybuffer, // 指定响应类型为ArrayBufferconst data new Uint8Array(response.data); // 将ArrayBuffer转换为Uint8Arrayconst val { columns: [], data: [] }let offset 0; // 用于跟踪当前解析到的位置while (offset …

C#中正则表达式

在C#中,正则表达式由 System.Text.RegularExpressions 命名空间提供,可以使用 Regex 类来处理正则表达式。以下是一些常见的用法及示例。 C# 中使用正则表达式的步骤: 引入命名空间: using System.Text.RegularExpressions; 创…

Go 1.19.4 命令调用、日志、包管理、反射-Day 17

1. 系统命令调用 所谓的命令调用,就是通过os,找到系统中编译好的可执行文件,然后加载到内存中,变成进程。 1.1 exec.LookPath(寻找命令) 作用: exec.LookPath 函数用于在系统的环境变量中搜索可…