Leetcode 反转字符串中的单词

在这里插入图片描述
这个Java代码解决了“反转字符串中的单词顺序”的问题,具体思想如下:

1. 去除字符串首尾的空格

  • s.trim() 方法用于去除输入字符串 s 中的前导和尾随空格。这样做是为了防止在后续步骤中多余的空格对结果产生影响。

2. 按空格分割字符串

  • s.split("\\s+") 这一行使用正则表达式 \\s+ 来分割字符串。\\s+ 表示“一个或多个空格”,即使原字符串中存在多个连续的空格,这个表达式也可以将它们当作一个空格来处理。分割后的结果是一个字符串数组,每个元素都是一个单词。

3. 倒序拼接单词

  • StringBuilder result = new StringBuilder(); 创建一个可变的字符串对象 result,用于存储反转后的结果。
  • for (int i = words.length - 1; i >= 0; i--) 循环遍历分割出的单词数组,循环从数组最后一个单词开始,依次将单词添加到 result 中,这样就实现了单词的倒序排列。
  • result.append(" "); 仅在每个单词之间添加一个空格,确保输出中单词之间只有一个空格。为了避免最后一个单词后面多出空格,if (i > 0) 判断当前是否是最后一个单词。

4. 返回结果

  • 最后使用 result.toString()StringBuilder 中的内容转换为字符串,并返回反转后的字符串。

主要算法思想总结:

  • 字符串分割和反转:通过正则表达式分割字符串,并利用倒序循环来重组字符串,从而实现单词顺序的反转。
  • 去除多余空格trim()split("\\s+") 的组合确保了字符串中的多余空格被处理好,最终输出的单词之间只留一个空格。
  • 时间复杂度:该算法的时间复杂度为 O(n),其中 n 是字符串的长度,因为需要遍历字符串和数组来处理每个单词。

适用场景:

此算法能够有效处理输入字符串中的前导、尾随空格以及多个单词之间的多余空格,是一种高效且简单的解决方法。

class Solution {public String reverseWords(String s) {s = s.trim();//将两端进行处理String[] words = s.split("\\s+"); //使用正则表达式按空格分割,\\s+可以按照1或多个空格分割StringBuilder result = new StringBuilder();for(int i = words.length - 1; i >= 0; i--) {result.append(words[i]);if(i > 0) {result.append(" ");}}s = result.toString();return s;}
}

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

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

相关文章

Ingress-nginx中HTTPS的强制转发

文章目录 在使用aws 的NLB转发流量到ingress时,发现NLP上生成的转发配置不符合正常预期,如下图: ingress-nginx service 配置如下: apiVersion: v1 kind: Service metadata:annotations:service.beta.kubernetes.io/aws-load-b…

智能去毛刺:2D视觉引导机器人如何重塑制造业未来

机器人技术已经深入到各个工业领域中,为制造业带来了前所未有的变革。其中,2D视觉引导机器人技术以其精准、高效的特点,在去毛刺工艺中发挥着越来越重要的作用。本文将为您介绍2D视觉引导机器人技术的基本原理及其在去毛刺工艺中的应用&#…

Node.js学习笔记

回顾: javascript 可以在浏览器运行 (js代码会JavaScript的解析引擎执行)chrome 》V8 (性能最好)FireFox 》 奥丁猴safri 》JSCoreIE浏览器 》查克拉JavaScript可以在浏览器端操作DOM 和BOM每一个浏览器都内置了B…

php生成PDF文件(FPDF)

FPDF即“Free PDF”,FPDF类库提供了基本的PDF创建功能,其源代码和使用权是免费的。 PDF格式文档优势 通用:PDF文档在UNIX和Windows系统均可正常使用。 安全:PDF文档可设置为只读模式,并且可以添加密码等保护措施。 美…

JavaScript:闭包、防抖与节流

一,闭包 1,什么是闭包 闭包是指一个函数和其周围的词法环境(lexical environment)的组合。 换句话说,闭包允许一个函数访问并操作函数外部的变量。 闭包的核心特性: 函数内部可以访问外部函数的变量即使外部函数已经返回,内部…

ApacheShiro反序列化 550 721漏洞

Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码和会话管理个漏洞被称为 Shiro550 是因为在Apache Shiro的GitHub问题跟踪器中,该漏洞最初被标记为第550个问题,721漏洞名称也是由此而来 Shiro-550 CVE-2016-4437 Shiro反序列化Docker复现 …

Pytest参数详解 — 基于命令行模式!

1、--collect-only 查看在给定的配置下哪些测试用例会被执行 2、-k 使用表达式来指定希望运行的测试用例。如果测试名是唯一的或者多个测试名的前缀或者后缀相同,可以使用表达式来快速定位,例如: 命令行-k参数.png 3、-m 标记(…

在wsl2下将Ubuntu从一个盘移动到其他盘

参考文章: wsl下将Ubuntu从c盘移动到其他盘 WSL数据迁移(迁移ext4.vhdx) WSL 系统迁移(2),导入虚拟机磁盘映像 .vhdx ext4/fs WSL2迁移后默认登陆用户为root的解决方案 操作过程: 1.查看当前系统中wsl分发版本 …

系统托盘图标+快捷启动(Python)

QkStart 我把这个程序命名为QkStart 代码 # -*- coding: utf-8 -*- # Environment PyCharm # File_name QkStart |User Pfolg # 2024/10/19 22:06 import threading import time import pystray from PIL import Image from pystray import MenuItem, Menu import o…

【网络安全】缓存欺骗问题之查看个人资料接口

未经许可,不得转载。 文章目录 正文正文 目标网站 target.com,查看个人资料页面时,API 端点为/get_user,完整的 URL 是 https://target.com/web-api/v1/get_user?timestamp=123456(其中 timestamp 是一个易受攻击的参数)。 我注意到响应中有一个 cf-cache-status= MISS…

【ESP32-IDFV5.3.1开发】带SSL的MQTT-demo连接教程

目录 1.VSCODE以及IDF环境配置(略) 2.准备demo 2.1打开VSCODE,主菜单创建示例 找到SSL对应demo,点击创建,并成功创建项目,点击编译,显示编译成功即可以下一步。 确认该demo支持的开发板是你手上的开发板 3.修改demo配…

了解EasyNVR及EasyNVS,EasyNVR连接EasyNVS显示授权超时如何解决?什么原因?

我们先来了解NVR批量管理软件/平台EasyNVR,它深耕市场多年,为用户提供多种协议,兼容多种厂商设备,包括但不限于支持海康,大华,宇视,萤石,天地伟业,华为设备。 NVR录像机…

基于模型设计的智能平衡移动机器人-基础实验SPI

目录 SPI介绍 模型搭建 SPI介绍 SPI即Serial Peripheral Interface是高速同步串行输入/输出端口。SPI目前被广泛用于外部移位寄存器、D/A、A/D、串行EEPROM、LED显示驱动器等外部芯片的扩展。与前文介绍的SCI最大的区别是,SPI是同步串行接口。 SPI接口的通信原理简单&#…

(五)若使用LQR控制小车倒立摆,该如何对小车和摆杆的动力学方程线性化?哪些变量是可以进行简化的,线性化后的状态空间方程应该怎么列写

写在前面: 关于lqr控制的讲解,可以观看如下三个视频: 2. LQR数学公式理解_哔哩哔哩_bilibili 如何感性地理解LQR控制?_哔哩哔哩_bilibili LQR简介与使用_哔哩哔哩_bilibili 正文: 在之前系列的文章中我们已经得出…

WGCLOUD使用手册 - 文件防篡改监测

WGCLOUD作为一款运维平台,天然具备了文件防篡改监测能力,也可以监测文件夹 如果发现文件或者文件夹下的文件,被修改,被删除,被添加等操作,会立刻发送告警通知 如果设置了自动恢复指令,也会立刻…

极速体验:实用的前端性能优化技巧

本文将深入探讨一系列实用的前端性能优化方案,从基础知识到高级技巧,我们将揭示如何让你的网站在瞬息万变的互联网中脱颖而出,无论你是经验丰富的开发者还是刚入行的新手,这篇文章都将为你提供宝贵的见解和实践建议。 目录 &…

基于SSM+微信小程序的打印室预约管理系统(打印2)

👉文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1、项目介绍 基于SSM微信小程序的打印室预约管理系统实现了管理员和用户两个角色。 1、管理员功能有个人中心,用户管理,附近打印店管理,文件打印管理,当…

rk3568 android11 单独烧写内核。

问题: 我现在 遇到一个问题,如果我单独 烧写boot.img 的话,就会进入 recovery 的模式。 如下图: 问题说明: 如果我烧写的 Update.img 是可以启动的。那么我再烧写一个 编译 update.img 顺带编译出来的 boot.img 是可以正常启动的。 问题出在 , 如果我 重新编译一遍 ,使…

LVGL-从入门到熟练使用

LVGL简介 LVGL( Light and Versatile Graphics Library )是一个轻量、多功能的开源图形库。 1、丰富且强大的模块化图形组件:按钮 、图表 、列表、滑动条、图片等 2、高级的图形引擎:动画、抗锯齿、透明度、平滑滚动、图层混合等…

WebGL编程指南 - WebGL入门

初识绘图流程、缓冲区、着色器、attribute和uniform变量 先画一个蓝色的正方形 html代码&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta http-equiv"X-UA-Compatible" content&…