LeetCode算法题-Reverse Words in a String III(Java实现)

Java LeetCode每日一题-从易到难带你领略算法的魅力(一):上升下降字符串 上升下降字符串1.题目要求2.题目示例3.提示4.解题4.1 解题思路4.2 业务代码4.3 运行结果5.优化5.1 优化思路5.2 优化业务代码5.3 优化结果6.总结 1.题目要求 给你一个字符串 s ,请你根据下面的算法重新构造字符串: 从 s 中选出 最小 的字符,将它 接在 结果字符串的后面。 从 s 剩余字符中选出 最小 的字符,且该字符比上一个添加的字符大,将它 接在 结果字符串后面。 重复步骤 2 ,直到你没法从 s 中选择字符。 从 s 中选出 最大 的字符,将它 接在 结果字符串的后面 阅读详情

这是悦乐书的第259次更新,第272篇原创

01 看题和准备

今天介绍的是LeetCode算法题中Easy级别的第126题(顺位题号是557)。给定一个字符串,您需要反转句子中每个单词中的字符顺序,同时仍保留空格和初始单词顺序。例如:

输入:“Let’s take LeetCode contest”
输出:“s’teL ekat edoCteeL tsetnoc”

注意:在字符串中,每个单词由单个空格分隔,并且字符串中不会有任何额外的空格。

本次解题使用的开发工具是eclipse,jdk使用的版本是1.8,环境是win7 64位系统,使用Java语言编写和测试。

02 第一种解法

将s按照空格拆分为字符串数组,然后对数组中的每一个元素做翻转,再以空格拼接,作为结果返回。

public String reverseWords(String s) {
    String[] arr = s.split(" ");
    StringBuilder result = new StringBuilder();
    for (int i=0; i<arr.length; i++) {
        String ss = arr[i];
        StringBuilder sb = new StringBuilder(ss);
        sb.reverse();
        arr[i] = sb.toString();
        if (i == arr.length-1) {
            result.append(arr[i]);
        } else {
            result.append(arr[i]+" ");
        }
    }
    return result.toString();
}

03 第二种解法

对于第一种解法我们还可以再优化下。

public String reverseWords2(String s) {
    String[] arr = s.split(" ");
    StringBuilder result = new StringBuilder();
    for (String ss : arr) {
        result.append(new StringBuilder(ss).reverse().toString()+" ");
    }
    return result.toString().trim();
}

04 第三种解法

我们也可以直接在字符串内部进行操作。将以空格分割开的单个单词为一个对象,对其中的字符进行互换。先将s转为字符数组,如果当前字符不为空格,索引就继续向后移动,直到遇到空格为止,此时我们获取了第一个单词组成的字符的起始索引,再使用一次循环,将其字符进行反转,然后将索引还原。最后将字符数组转为字符串返回即可。

public String reverseWords3(String s) {
    char[] arr = s.toCharArray();
    for (int i=0; i<arr.length; i++) {
        if (arr[i] != ' ') {
            int j = i;
            while (i<arr.length && arr[i] != ' ') {
                i++;
            }
            i--;
            int index = i;
            while (j < i) {
                char temp = arr[j];
                arr[j] = arr[i];
                arr[i] = temp;
                j++;
                i--;
            }
            i = index;
        }
    }
    return new String(arr);
}

05 小结

算法专题目前已日更超过三个月,算法题文章126+篇,公众号对话框回复【数据结构与算法】、【算法】、【数据结构】中的任一关键词,获取系列文章合集。

以上就是全部内容,如果大家有什么好的解法思路、建议或者其他问题,可以下方留言交流,点赞、留言、转发就是对我最大的回报和支持!

荒岛逃生游戏 正负表示逃生方向(正表示向右逃生,负表示向左逃生),绝对值表示战斗力,越左边的数字表示里左边港口越近,逃生方向相同的人永远不会发生决斗。- 如果左逃生者的战斗力大于右逃生者,则左逃生者获胜,减少其战斗力,并将右逃生者出栈。- 处理完所有输入后,统计仍在右逃生者栈和左逃生者栈中的战斗力,即可得到成功逃生的人数。- 如果左逃生者的战斗力小于右逃生者,则右逃生者获胜,减少其战斗力,左逃生者出局。- 向左逃生:从右逃生者栈中取出元素,与当前逃生者进行决斗。- 继续进行决斗,直到没有右逃生者或左逃生者的战斗力用尽。 阅读详情

相关推荐

国际项目投标那些事(三)海外项目招标文件的组成

以一个实际的项目作为例子,是我2020年初投的一个东南亚国家的水厂的竞争性投标。这个投标的招标基于FIDIC yellow book (Design and Build) 合同模板。 海外项目的招标一般是有专门的咨询公司(consulting engineer)写招标文件,有的咨询公司非常专业,对于技术、合同、业绩的要求非常细致。 我这个项目的招标文件共5册 400多页(全英文),附件26册将...

WTSolutions的博客 2006

【LeetCode】1528. 重新排列字符串(Java)

给你一个字符串 s 和一个 长度相同 的整数数组 indices 。 请你重新排列字符串 s ,其中第 i 个字符需要移动到 indices[i] 指示的位置。 返回重新排列后的字符串。 class Solution { public String restoreString(String s, int[] indices) { char[] arr = new char[indices.length]; //遍历,按照顺序放入即可 for (int

小楊同学的笔记本 287

整合Springboot+MybatisPlus+达梦数据库

整合Springboot+MybatisPlus+达梦数据库,以及一些坑

波波的博客 6679

给定一个字符串,你需要颠倒一个句子中每个单词中的字符顺序,同时保留空格和初始单词顺序。

我的代码 public static void main(String[] args) { String str = "we are family's"; StringBuffer sb = new StringBuffer(str).reverse(); String[] split = sb.toString().split(" ");

qq_34124060的博客 3864

【一步到位】Android Studio 实现安卓连接阿里云物联网云平台

最新版本目前是Android Studio Iguana | 2024.1.2,你可以到官网上去找之前的版本,手上有工作项目的不要去轻易尝试,说不定你就编译失败了,失败了也不要担心,解决就可以了。

m0_73799445的博客 1万+

香橙派5上跑DeepSeek-R1的避坑指南:从模型下载到NPU加速全流程解析

本文详细解析了在香橙派5(RK3588)上部署DeepSeek-R1蒸馏模型的完整流程与优化技巧。内容涵盖从系统配置、RKLLM工具链编译、模型转换到NPU加速调优的全过程,重点分享了如何利用RK3588的NPU算力实现高效推理,并提供了常见问题的解决方案,为边缘设备部署LLM提供了实用指南。

CAT789的专栏 717

Leetcode 1324:竖直打印单词(超详细的解法!!!)

给你一个字符串 s。请你按照单词在 s 中的出现顺序将它们全部竖直返回。 单词应该以字符串列表的形式返回,必要时用空格补位,但输出尾部的空格需要删除(不允许尾随空格)。 每个单词只能放在一列上,每一列中也只能有一个单词。 示例 1: 输入:s = "HOW ARE YOU" 输出:["HAY","ORO","WEU"] 解释:每个单词都应该竖直打印。 "HAY" "ORO" "WEU" ...

coordinate的博客 6035

YOLO详解

本文参考知乎 https://zhuanlan.zhihu.com/p/25236464 1. YOLO的创新点 YOLO将物体检测作为回归问题求解。基于一个单独的end-to-end网络,完成从原始图像的输入到物体位置和类别的输出。 从网络设计上,YOLO与two steps的目标检测方法如RCNN、Fast RCNN和Faster RCNN的区别如下: YOLO训练和检测均是在一个单独网...

UnknownPlayer的博客 9960

LeetCode 557. Reverse Words in a String III (Java版; Easy)

welcome to my blog LeetCode Top Interview Questions 557. Reverse Words in a String III (Java版; Easy) 题目描述 Given a string, you need to reverse the order of characters in each word within a sentence whi...

littlehaes的博客 294

第7次CCF PTA编程培训师资认证-T1 真题解析(2024下)

B。

lan_in的博客 514

DeepSeek掘金——用DeepSeek模型构建AI 代理

在本综合指南中,我们将探讨如何利用 DeepSeek 的功能构建能够以有意义的方式理解、推理和交互的复杂 AI 代理。人工智能领域正在迅速发展,DeepSeek 的模型代表了智能 AI 代理开发的重大进步。在本综合指南中,我们将探讨如何利用 DeepSeek 的功能构建能够以有意义的方式理解、推理和交互的复杂 AI 代理。

3863

【LeetCode】557.Reverse Words in a String III

题目:https://leetcode.com/problems/reverse-words-in-a-string-iii/description/ 我的代码+学习代码

Fannie08的博客 323

企业级大数据平台的数据网格(Data Mesh)转型之路

随着企业数字化转型的深入,传统大数据平台面临数据孤岛化、治理成本高、业务响应慢等核心痛点。数据网格作为一种新兴的分布式数据管理架构,通过领域驱动设计(DDD)、数据产品化和联邦治理模式,为企业提供了打破数据壁垒、提升数据生产力的全新路径。本文聚焦企业级数据平台从传统架构(数据湖/数据仓库)向数据网格转型的关键技术、实施步骤和组织配套,涵盖技术架构设计、核心算法实现、项目实战案例及工具链推荐。背景介绍:定义转型目标、术语体系与核心挑战核心概念与联系:解析数据网格四大支柱及技术架构图谱核心算法原理。

AI 领航者的博客 1084

【Leetcode】557. Reverse Words in a String III

题目地址: https://leetcode.com/problems/reverse-words-in-a-string-iii/ 给定一个英文句子,单词以空格分隔。要求将句子中所有单词翻转,返回翻转后的句子。代码如下: public class Solution { public String reverseWords(String s) { if (s == null...

数学、算法爱好者的博客 226

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

[Leetcode] 557. Reverse Words in a String III

link: https://leetcode.com/problems/reverse-words-in-a-string-iii/ Solution: spilt + reverse class Solution { public String reverseWords(String s) { if(s.length() == 0) return s; S...

Renoler的博客 148

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Leetcode 557. Reverse Words in a String III 及 Java StringBuffer 和 StringBuilder类

目录Java StringBuffer 和 StringBuilder 类Leetcode 557. Reverse Words in a String III Java StringBuffer 和 StringBuilder 类 当对字符串进行修改的时候,需要使用 StringBuffer 和 StringBuilder 类。 和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。 StringBuilder 类在 J

cortye的博客 201

LeetCode 力扣 557. 反转字符串中的单词 III reverse Words In A String III

大家觉得写还可以,可以点赞、收藏、关注一下吧! 也可以到我的个人博客参观一下,估计近几年都会一直更新!和我做个朋友吧!https://motongxue.cn 文章目录557. 反转字符串中的单词 III题目描述示例:提示:朴素版本原地解法提交结果 557. 反转字符串中的单词 III 题目描述 给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。 示例: 输入:"Let's take LeetCode contest" 输出:"s'teL ekat edoCteeL t

motongxue的博客 257

ledecode Reverse Words in a String III

557.Reverse Words in a String III Given a string, you need to reverse the order of characters in each word within a sentence while still preserving whitespace and initial word order. E...

abcdef00001111234的博客 218

leetcode 557. Reverse Words in a String III

Given a string, you need to reverse the order of characters in each word within a sentence while still preserving whitespace and initial word order. Example 1: Input: "Let's take LeetCode contes

淡然坊 785

【leetcode】557. Reverse Words in a String III

class Solution { public String reverseWords(String s) { String[] words = s.split(" "); StringBuffer sb = new StringBuffer(); for(String word : words) { ...

Art1st_D的博客 261

Leetcode 557. Reverse Words in a String III

题目:Given a string, you need to reverse the order of characters in each word within a sentence while still preserving whitespace and initial word order. Example 1: Input: “Let’s take LeetCode contest”

jessir的专栏 1808

【LeetCode】557. Reverse Words in a String III 解题报告(Java & Python)

【LeetCode】Reverse Words in a String III 解题报告标签(空格分隔): LeetCode题目地址:https://leetcode.com/problems/reverse-words-in-a-string-iii/#/description题目描述:Given a string, you need to reverse the order of charact

负雪明烛 2936

LeetCode Reverse Words in a String III

原题链接在这里:https://leetcode.com/problems/reverse-words-in-a-string-iii/#/description 题目: Given a string, you need to reverse the order of characters in each word within a sentence while still preservin...

weixin_30954265的博客 111

[LeetCode]557. Reverse Words in a String III

Given a string, you need to reverse the order of characters in each word within a sentence while still preserving whitespace and initial word order. Example 1: Input: "Let's take LeetCode contest"

黑客与画家 292
上一篇: LeetCode算法题-Student Attendance Record I(Java实现)
下一篇: LeetCode算法题-Quad Tree Intersection(Java实现)
程序员小川
博客等级 码龄10年 47粉丝 305原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值