Leetcode 151. 翻转字符串里的单词

python【力扣LeetCode算法题库】151- 翻转字符串里的单词 翻转字符串里的单词 给定一个字符串,逐个翻转字符串中的每个单词。 示例 1: 输入: “the sky is blue” 输出: “blue is sky the” 示例 2: 输入: " hello world! " 输出: “world! hello” 解释: 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。 示例 3: 输入: “a good example... 阅读详情

题目

给定一个字符串,逐个翻转字符串中的每个单词。

示例 1:

输入: “the sky is blue”
输出: “blue is sky the”

示例 2:

输入: " hello world! "
输出: “world! hello”
解释: 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。

示例 3:

输入: “a good example”
输出: “example good a”
解释: 如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。

说明:

  • 无空格字符构成一个单词。
  • 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。
  • 如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。

进阶:

  • 请选用 C 语言的用户尝试使用 O(1) 额外空间复杂度的原地解法。

解答

解决方法很简单,只需要将字符串整个倒序,再分别对单词倒序即可。

使用库函数

代码
class Solution {
    public String reverseWords(String s) {
        s = new StringBuilder(s.trim()).reverse().toString();
        List<String> res = new ArrayList<>();        
        
        int lt = 0;
        int gt = 0;
        while(gt < s.length()) {
            while(gt < s.length() && s.charAt(gt) == ' ') gt ++;
            
            lt = gt;
            if(lt == s.length()) break;
            while(gt < s.length() && s.charAt(gt) != ' ') gt ++;

            res.add(new StringBuilder(s.substring(lt, gt)).reverse().toString());
        }
        
        
        return String.join(" ", res);
    }
}
结果

在这里插入图片描述

自己实现 去空字符 + 翻转

代码
class Solution {
    public String reverseWords(String s) {
        char[] chars = s.toCharArray();
        
        int newLength = trimAndDeleteRepeatedSpace(chars);
        
        reverse(chars, 0, newLength);
        
        int lt = 0;
        int gt = 0;
        while(gt < newLength) {
            while(gt < newLength && chars[gt] == ' ') gt ++;
            
            lt = gt;
            if(lt == newLength) break;
            while(gt < newLength && chars[gt] != ' ') gt ++;

            reverse(chars, lt, gt);
        }
        
        return new String(chars, 0, newLength);
    }
    
    private int trimAndDeleteRepeatedSpace(char[] chars) {
        int end = chars.length;
        while(end > 0 && chars[end - 1] == ' ') end --;
        
        int i = -1;
        int j = 0;
        while(j < end) {
            if(chars[j] != ' ' || i >= 0 && chars[i] != ' ') {
                chars[++ i] = chars[j ++];
            } else {
                j ++;
            }
        }
        
        return i + 1;
    }  
    
    private void reverse(char[] chars, int start, int end) {
        int i = start;
        int j = end - 1;
        char temp;
        while(i < j) {
            temp = chars[j];
            chars[j] = chars[i];
            chars[i] = temp;
            i ++;
            j --;
        }
    }
}
结果

在这里插入图片描述

注意力机制模块:二次创新:CBAM 与 ECA 融合形成 CECA 模块,参数量减少 40% 文章摘要: 本文提出一种轻量化注意力模块CECA,通过融合CBAM和ECA的优势解决模型部署中的精度与速度矛盾。CBAM虽具备通道和空间双重注意力,但参数量大;ECA轻量但缺乏空间注意力。CECA采用ECA的一维卷积替换CBAM的通道注意力部分,保留其空间注意力模块,在保持双注意力能力的同时减少40%参数量。实验表明该方案在边缘设备部署中能维持精度并提升推理速度,特别适用于YOLO等目标检测模型的轻量化改进。文章详细拆解了架构设计、代码实现及参数量优化原理,为算法工程师和嵌入式开发者提供了实用解决方案。 阅读详情

相关推荐

CrackerXI+脱壳实战:解决iOS应用逆向中的加密文件问题

本文详细介绍了如何使用CrackerXI+工具对iOS应用进行脱壳,解决App Store应用因FairPlay DRM加密而无法进行静态分析的难题。通过图形化界面一键操作,CrackerXI+能高效获取解密后的可执行文件,为逆向工程奠定基础。文章涵盖工具选型、实战步骤及常见问题排查,是iOS逆向入门与进阶的实用指南。

seed的博客 256

翻转字符串里的单词

给定一个字符串,逐个翻转字符串中的每个单词。 示例 1: 输入: "the sky is blue" 输出: "blue is sky the" 复制代码 示例 2: 输入: " hello world! " 输出: "world! hello" 解释: 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。 复制代码 示例 3: 输入: "a good example" ...

weixin_34334744的博客 420

Vivaldi天线HFSS建模实战:从参数化曲线到辐射优化的完整流程

本文详细介绍了Vivaldi天线在HFSS中的建模与优化全流程,涵盖参数化曲线绘制、馈电系统设计及性能验证等关键步骤。通过实战案例分享,帮助工程师掌握超宽带天线的HFSS建模技巧,提升雷达探测和通信系统设计效率。重点解析了指数渐变曲线建模、微带馈电优化等核心技术要点。

weixin_29228781的博客 273

【字符串】翻转单词顺序,左旋转字符串

面试题58-1:翻转单词顺序 输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。例如输入字符串&amp;quot;I am a student. “,则输出&amp;quot;student. a am I”。 先对整个字符串翻转,再对字符串中的每个单词做翻转。 #include&amp;amp;lt;bits/stdc++.h&amp;amp;gt; using namespace std; //翻

大桔骑士的学习笔记 752

从时频谱图到智能感知:雷达信号处理的AI进化之路

本文探讨了人工智能在雷达信号处理中的革命性应用,特别是深度学习在时频谱图分析中的突破性进展。通过对比传统信号处理方法与AI驱动的解决方案,展示了CNN、3D CNN等模型在目标检测、行为识别等场景中的优势,并分析了数据获取、模型优化等关键技术挑战。AI赋能的雷达技术已广泛应用于智能交通、工业检测和医疗健康领域,展现出巨大的发展潜力。

weixin_29284201的博客 505

PID控制参数整定(调节方法)原理+图示+MATLAB调试

序 首先最重要的是了解每个参数调节了系统响应的那些属性,通过观察响应从而调节参数改变属性。 PID的作用概述: 1、P产生响应速度和力度,过小响应慢,过大会产生振荡,是I和D的基础。 2、I在有系统误差和外力作用时消除偏差、提高精度,同时也会增加响应速度,产生过冲,过大会产生振荡。 3、D抑制过冲和振荡,过小系统会过冲,过大会减慢响应速度。D的另外一个作用是抵抗外界的突发干扰,阻止系统的突变。 同时调节的顺序是:P>I>D 下面了解的一个很重要的就是调节的目标,也就是最好的响应曲线.

viafcccy的博客 16万+

翻转单词顺序 (20 分)

L1-5 翻转单词顺序 (20 分) 给定一个字符串,翻转该字符串,翻转时单词中的字符顺序不变。例如,如果字符串为"Hello World",则翻转后为"World Hello"。单词间以一个或多个空格分隔。注意,字符串开头和结尾都可能有多个空格。 输入格式: 输入可能包括多行。每行代表一个字符串,除了空格外,标点符号和普通字母一样处理。你可以认为一行的字符总数不会超过50000个,单词数不...

qq_41591279的博客 7933

RK3588高速接口实战-PCIE

摘要: RK3588的PCIe接口支持PCIe 3.0x4和PCIe 2.1x1/x2,具备Root Complex和Endpoint模式,适用于NVMe SSD、5G模块等高速设备。硬件设计需注意85Ω/100Ω阻抗匹配、220nF AC耦合电容及100MHz参考时钟。设备树需配置控制器节点、PHY模式和IOMMU映射(RC模式用iommu-map,EP模式用iommus)。调试时可通过lspci检查链路状态,dmesg查看训练日志,perf分析性能。常见问题包括设备识别失败(检查复位时序、PHY配置)、

weiyvyy的博客 499

PTA7-36翻转单词

输入一行字符串,所有内容保持相对位置,将单词翻转。字符串总长度未知,单词数量未知,每个单词不超过20个字母。测试数据保证输入的字符只含英文字母和空格。进行翻转操作后的字符串,因出题人老懒鬼,末尾记得带空格哦。本题目要求将输入字符串翻转。

m0_60738889的博客 893

微信小程序 - 解决微信支付报错 requestPayment:fail no permission 原因分析及排查处理(支付失败出错,无法唤起支付弹框面板,微信支付API报错请求付款:失败无权限)

微信小程序,微信支付,支付报错,errMsg: "requestPayment:fail no permission",支付失败,支付权限没问题,微信小程序支付报错,检查了appid正确依旧不行,微信小程序支付异常,苹果ios手机,安卓手机,开发者工具模拟器,最新解决教程,小程序wx.requestPayment报错/无响应,小程序支付 requestPaym,微信小程序认证,真机运行,小程序微信支付提示错误,微信小程序里使用微信支付错误提示,微信小程序支付异常,微信支付弹框拉不起来,小程序支付api,都检

🏆 前端领域优质创作者 1万+

Windows 下 Claude Code 使用全记录:从零到一的保姆级图文教程(持续更新)

本文主要介绍了Windows 下 Claude Code 使用全记录:从零到一的保姆级图文教程,希望能对学习使用 Claude Code 的同学们有所帮助。 文章目录 1. 背景 2. 实战教程(2026年最新教程) 2.1 步骤一 Claude Code 环境准备 2.2 步骤二 配置Claude Code 2.3 步骤三 对话 3. 老版本实战教程 3.1 步骤一 配置Node.js 3.2 步骤二 Claude Code配置 3.3 步骤三 配置Claude Code 3.4 步骤四 对话

weixin_43178406的博客 15万+

LeetCode151. 翻转字符串里的单词 多种解法

LeetCode151. 翻转字符串里的单词 题目 难度 中等 给定一个字符串,逐个翻转字符串中的每个单词。 示例 1: 输入: "the sky is blue" 输出: "blue is sky the" 示例 2: 输入: " hello world! " 输出: "world! hello" 解释: 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。 示例 3:...

一起加油 4861

R语言中的混淆矩阵(Confusion Matrix)是一种常用的评估多分类模型性能的工具

除了准确率,混淆矩阵还提供了其他有用的指标,如灵敏度(Sensitivity)、特异度(Specificity)、精确度(Precision)和召回率(Recall)。混淆矩阵通过比较模型预测结果与实际标签的一致性,帮助我们了解模型的分类准确性和错误类型。此外,混淆矩阵还提供了各种错误类型的统计信息,如假阳性(False Positive)和假阴性(False Negative)等。通过混淆矩阵,我们可以了解模型的整体性能和错误类型,从而对模型进行评估和改进。最后,为了更好地理解混淆矩阵的结果,可以使用。

HackSquad的博客 972

LeetCode 151.翻转字符串里的单词

示例 1: 输入: "the sky is blue" 输出: "blue is sky the"示例 3: 输入: "a good example" 输出: "example good a"示例 2: 输入: " hello world!" 输出: "world!解释: 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。解释: 如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。给定一个字符串,逐个翻转字符串中的每个单词。将字符串去除多余的空格。

m0_74989367的博客 580

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

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

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Leetcode 151. 翻转字符串里的单词 C++

Leetcode 151. 翻转字符串里的单词 题目 给定一个字符串,逐个翻转字符串中的每个单词。 测试样例 示例 1: 输入: "the sky is blue" 输出: "blue is sky the" 示例 2: 输入: " hello world! " 输出: "world! hello" 解释: 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。 示例 3: 输入: "a good example" 输出: "example good a" 解释: 如果两个单词间

weixin_43750513的博客 344

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Leetcode 151.翻转字符串里的单词

Leetcode 151.翻转字符串里的单词 翻转字符串里的单词 给定一个字符串,逐个翻转字符串中的每个单词。 说明: 无空格字符构成一个 单词 。 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。 如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。 示例 1: 输入:“the sky is blue” 输出:“blue is sky the” 示例 2: 输入:" hello world! " 输出:“world! hello” 解释:输入字符串可以在前面或者

EIUC_Thread的博客 256

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

精选力扣500题 第48题 LeetCode 151. 翻转字符串里的单词【c++详细题解】

目录1、题目2、思路3、c++代码 1、题目 给你一个字符串 s,逐个翻转字符串中的所有 单词 。 单词 是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的 单词 分隔开。 请你返回一个翻转 s 中单词顺序并用单个空格相连的字符串。 说明: 输入字符串 s 可以在前面、后面或者单词间包含多余的空格。 翻转后单词间应当仅用一个空格分隔。 翻转后的字符串中不应包含额外的空格。 示例 1: 输入:s = "the sky is blue" 输出:"blue is sky the" 示例 2: 输

林深不见鹿 的博客 3801

LeetCode 151. 翻转字符串里的单词

题目链接:LeetCode 151. 翻转字符串里的单词 题意: 给定一个字符串,逐个翻转字符串中的每个单词。 输入: " hello world! " 输出:"world! hello" 解释: 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。 如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。 解题思路: 将字符串中分割成单词,放入数组中,然后反向拼接 class Solution { public: string r...

error311的博客 187

【LeetCode】151. 翻转字符串里的单词

文章目录题目:151. 翻转字符串里的单词解题思路代码 题目:151. 翻转字符串里的单词 151. 翻转字符串里的单词 给你一个字符串s,逐个翻转字符串中的所有 单词 。 单词 是由非空格字符组成的字符串。s中使用至少一个空格将字符串中的 单词 分隔开。 请你返回一个翻转s中单词顺序并用单个空格相连的字符串。 说明: 输入字符串s可以在前面、后面或者单词间包含多余的空格。 翻转后单词间应当仅用一个空格分隔。 翻转后的字符串中不应包含额外的空格。 示例 1: 输入:s = “the sky is bl

ZhShy 815

LeetCode面试算法-力扣 151. 翻转字符串里的单词

151. 翻转字符串里的单词 题目描述 给定一个字符串,逐个翻转字符串中的每个单词。 说明:无空格字符构成一个单词。输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。 示例 1: 输入: "the sky is blue" 输出: "blue is sky the"示例 2: 输入...

牧野飞鸿的博客 530

LeetCode第 151 题:翻转字符串里的单词(C++)

151. 翻转字符串里的单词 - 力扣(LeetCode) 类似:剑指 Offer 58 - I. 翻转单词顺序_zj-优快云博客 class Solution { public: string reverseWords(string s) { string res; int i = 0; while(i < s.size()){ while(i < s.size() && s[i] == ' '

zj 631

leetcode  151. 翻转字符串里的单词 medium

leetcode 151. 翻转字符串里的单词medium 题目描述: 给定一个字符串,逐个翻转字符串中的每个单词。 示例 2: 输入: " hello world! " 输出:"world! hello" 解释: 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。 说明: 无空格字符构成一个单词。 输入字符串可以在前面或者后面包含多余...

speargod的博客 204

LeetCode151- 翻转字符串里的单词(Reverse Words in a String)

LeetCode151- 翻转字符串里的单词(Reverse Words in a String) 最近全国疫情严重,待在家里没事干,马上又要准备春招了,最近刷刷题,记录一下!再说一句,武汉加油,大家出门记得戴口罩! 1、题目 给定一个字符串,逐个翻转字符串中的每个单词。 示例 1: 输入: "the sky is blue" 输出: "blue is sky the" 示例 2: 输入: " ...

sk18192449347的博客 442

LeetCode 151题 翻转字符串里的单词

LeetCode 151题

sakuraSD的博客 5606

leetcode 151. 翻转字符串里的单词

leetcode 151. 翻转字符串里的单词 给定一个字符串,逐个翻转字符串中的每个单词。 题解: 1.翻转字符串的单词 2.以空格为分隔符 3.反转后的字符不包括多余空格 4.只在两单词间有一个空格 示例 1: 输入: "theskyisblue" 输出: "blueisskythe" 示例 2: 输入:" hello world! " 输出: "wo...

j_thame_myhome的博客 220

LeetCode151. 翻转字符串里的单词

151. 翻转字符串里的单词 题目链接 解法一:去除字符串首尾空格,从尾部开始遍历字符串 public String reverseWords(String s) { if (s == null || s.length() < 1) { return s; } char[] str = s.trim().toCharAr...

码农在途的博客 460
上一篇: Leetcode 125. 验证回文串
下一篇: Leetcode 165. 比较版本号
一纸浮萍
博客等级 码龄9年 11粉丝 103原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值