java数据结构与算法刷题-----LeetCode58:最后一个单词的长度

【简单】力扣算法题解析LeetCode58:最后一个单词的长度 要求返回字符串中最后一个单词的长度。通过逆向遍历字符串,先跳过末尾空格,再从后向前统计非空格字符的数量,直到遇到空格或开头。例如,"Hello World"返回5("World"的长度)。Java实现中,使用双指针跳过尾部空格后统计单词长度,时间复杂度O(n),空间复杂度O(1)。该方法高效且无需额外存储,适合处理包含前导/尾随空格的长字符串。 (字数:150) 阅读详情
java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.youkuaiyun.com/grd_java/article/details/123063846

在这里插入图片描述

  1. 思路分析

从后往前遍历

  1. 代码
    在这里插入图片描述
class Solution {
    public int lengthOfLastWord(String s) {
        int ans = 0;
        int index = s.length()-1;
        while(index>=0 && s.charAt(index)==' ') index--;//从后往前,跳过后面多余的空格
        while (index>=0 && s.charAt(index--)!=' ')ans++;//一直遍历到第一个遇到空格的位置
        return ans;//返回
    }
}

刷题一定要坚持,总结套路,不单单要把题做出来,要举一反三,也要参考别人的思路,学习别人解题的优点,找出你觉得可以优化的点。

  1. 单链表解题思路:双指针、快慢指针、反转链表、预先指针
  1. 双指针:对于单链表而言,可以方便的让我们遍历结点,并做一些额外的事
  2. 快慢指针:常用于找链表中点,找循环链表的循环点,一般快指针每次移动两个结点,慢指针每次移动一个结点。
  3. 反转链表:通常有些题,将链表反转后会更好做,一般选用三指针迭代法,递归的空间复杂度有点高
  4. 预先指针:常用于找结点,比如找倒数第3个结点,那么定义两个指针,第一个指针先移动3个结点,然后两个指针一起遍历,当第一个指针遍历完成,第二个指针指向的结点就是要找的结点
  1. 数组解题思路:双指针、三指针,下标标记
  1. 双指针:多用于减少时间复杂度,快速遍历数组
  2. 三指针:多用于二分查找,分为中间指针,左和右指针
  3. 下标标记:常用于在数组范围内找东西,而不想使用额外的空间的情况,比如找数组长度为n,元素取值范围为[1,n]的数组中没有出现的数字,遍历每个元素,然后将对应下标位置的元素变为负数或者超出[1,n]范围的正数,最后没有发生变化的元素,就是缺少的值。
  4. 差分数组:对差分数组求前缀和即可得到原数组
  1. 用差值,作为下标,节省空间找东西。比如1900年到2000年,就可以定义100大小的数组,每个数组元素下标的查找为1900。
  2. 前缀和数组,对于数组 [1,2,2,4],其差分数组为 [1,1,0,2],差分数组的第 ii个数即为原数组的第 i-1 个元素和第 i个元素的差值,也就是说我们对差分数组求前缀和即可得到原数组
  1. 前缀和:假设有一个数组arr[1,2,3,4]。然后创建一个前缀和数组sum,记录从开头到每个元素区间的和。第一个元素是0。第二个元素,保存第一个和sum[1] = sum[0]+arr[0],第二个元素,保存第二个和sum[2] = sum[1]+arr[1]
  1. 栈解题思路:倒着入栈,双栈
  1. 倒着入栈:适用于出栈时想让输出是正序的情况。比如字符串’abc’,如果倒着入栈,那么栈中元素是(c,b,a)。栈是先进后出,此时出栈,结果为abc。
  2. 双栈:适用于实现队列的先入先出效果。一个栈负责输入,另一个栈负责输出。
SQL面试题——抖音SQL面试题 股票波峰波谷 这个题目的难度比较低,我们是用lead 和 lag 两个函数就可以搞定,也就是在一个SQL 里面同时使用多个函数,问题的考查点在于对边界的考虑。 阅读详情

相关推荐

D触发器版图设计的艺术:最小化面积与最大化性能的平衡之道

本文探讨了D触发器版图设计中如何平衡最小化面积与最大化性能的核心挑战。通过分析晶体管布局、互联优化、时钟分布等关键策略,结合先进制程下的功耗与信号完整性考量,为数字IC工程师提供了从基础优化到制造验证的实用解决方案,助力实现高性能、低面积的芯片设计。

aa123的博客 911

LeetCode刷题记录9——58. Length of Last Word(easy)

LeetCode刷题记录9——58. Length of Last Word(easy) 目录 LeetCode刷题记录9——58. Length of Last Word(easy) 题目 语言 思路 源码 后记 题目 题目的输入是一个字符串s,输出是一个int型的数字。计算过程为:计算输入的字符串的最后一个单词的长度,比如输入“hello world”,最后一个单词就是w...

Jmuyjl 414

解决VMWare ESXi PCIe直通显卡导致的DevicePowerOn启动故障

本文详细解析了VMWare ESXi中PCIe直通显卡导致的DevicePowerOn启动故障,重点分析了MMIO空间不足的根本原因,并提供了完整的解决方案。通过修改.vmx文件中的关键参数,如pciPassthru.64bitMMIOSizeGB,可以有效解决显存分配问题。文章还涵盖了硬件兼容性检查、性能调优技巧及大规模部署的实战案例,帮助用户彻底解决显卡直通难题。

weixin_42537919的博客 576

【leetcode刷题】40.最后一个单词的长度——Java版

题出的不好

公号:一条coding 1万+

AI驱动视频剪辑自动化:cutcli命令行工具重塑工作流

视频剪辑自动化是提升内容生产效率的关键技术,其核心原理在于通过程序化指令替代手动操作,将创意执行过程代码化。这项技术的价值在于能够将创作者从重复性劳动中解放,实现批量化、标准化的视频内容生产,尤其适用于社交媒体运营、产品宣传等高频产出场景。通过封装专业软件(如剪映/CapCut)的底层草稿格式,自动化工具在保证工业级渲染质量的同时,提供了可编辑的中间态,为AI智能体(Agent)与生产工具的结合提供了清晰接口。本文以cutcli为例,深入探讨了如何通过命令行工具和AI助手,构建从自然语言指令到可编辑视频草稿

weixin_27210125的博客 1065

机械臂抓取前言

机械臂相关的笔记

weixin_64037619的博客 3908

Leetcode 58. 最后一个单词的长度

给定一个字符串 s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度。单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。

swerfse的博客 1099

新手也能搞定!用ADS 2023从零设计一个超宽带Wilkinson功分器(附完整版图)

本文详细介绍了如何使用ADS 2023从零开始设计超宽带Wilkinson功分器,涵盖介质板参数设置、微带线计算优化、版图生成验证等关键步骤。通过实例演示和常见问题排查,帮助射频工程新手快速掌握功分器设计技巧,提升设计效率。

weixin_42692935的博客 477

面试经典150题——最后一个单词的长度

面试经典150题——常规解法+逆天解法解析,新手也能学会!!!

WenJGo的博客 1553

结构力学仿真软件:STAAD.Pro:结构抗震设计与STAAD.Pro应用_2024-08-10_11-49-29.Tex

STAAD.Pro是一款广泛应用于结构工程领域的仿真软件,由Bentley Systems开发。它能够进行结构分析和设计,支持多种结构类型,包括桥梁、建筑物、塔架等。STAAD.Pro提供了强大的建模工具,用户可以轻松创建复杂的结构模型,并进行静态和动态分析。软件还支持多种载荷组合,包括地震载荷,以及提供详细的报告和图纸输出,便于工程师进行设计和审查。STAAD.Pro是一款广泛应用于结构工程设计的软件,其界面直观,功能强大,能够进行结构分析与设计。菜单栏。

977

DeerFlow 系列教程 第三篇 | 核心技术深度剖析:Skills、Memory 与 Context Engineering

摘要化是 Context Engineering 中最关键的组件——它直接决定了长对话的可用性。Skills 技能系统通过渐进式加载的三层模型,在保持系统提示词轻量的同时,支持无限数量的技能扩展。从发现到执行的 10 个生命周期阶段,配合 AI 驱动的安全扫描和多层缓存,构成了一个生产级的技能管理框架。Memory 长期记忆系统通过文件系统持久化、LLM 驱动的信息提取和防抖动异步更新,实现了跨会话的认知持久化。六类事实分类体系和修正信号检测机制,让 Agent 能够从交互中持续学习和改进。

weixin_43674738的博客 280

力扣--58. 最后一个单词的长度 (简单题)

力扣--58. 最后一个单词的长度【题目描述】【示例】【解答】【思路】【代码】【反思】 (简单题) ) 今天的第二道简单题,先用了暴力搜索法,耗时比较长。 【题目描述】 给你一个字符串 s,由若干单词组成,单词之间用空格隔开。返回字符串中最后一个单词的长度。如果不存在最后一个单词,请返回 0 。 单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。 原题传送门 【示例】 示例 1: 输入:s = “Hello World” 输出:5 示例 2: 输入:s = " " 输出:0 提示: 1≤s

Catherinyy的博客 1202

Odoo 入门 | 什么是 Odoo?

Odoo是一套全球开源的ERP/CRM系统,最初的名字为TinyERP,08年5月之后称之为OpenERP,之后又改为Odoo。

洛阳泰山的博客 6209

LeetCode刷题58-简单-最后一个单词的长度

算法作为极其重要的一点,是大学生毕业找工作的核心竞争力,所以为了不落后与人,开始刷力扣算法题!

布小禅的博客 5542

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

力扣解题-58. 最后一个单词的长度

第一次解答(去空格+找最后空格):逻辑简洁,利用内置方法快速实现,空间O(n),适合工程快速开发;反向遍历法(最优解):空间O(1),无额外内存开销,性能最优,适配所有Java版本;分割字符串法:逻辑最直观,但正则分割有额外开销,适合理解思路而非追求性能;关键技巧:处理“最后一个单词”类问题,优先考虑反向遍历,可避免处理头部冗余数据,且空间开销最小。

qq_38261626的博客 814

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

LeetCode 58. 最后一个单词的长度

目录结构 1.题目 2.题解 2.1java split()函数 2.2字符串遍历 1.题目 给定一个仅包含大小写字母和空格' '的字符串 s,返回其最后一个单词的长度。如果字符串从左向右滚动显示,那么最后一个单词就是最后出现的单词。 如果不存在最后一个单词,请返回 0。 说明: 一个单词是指仅由字母组成、不包含任何空格字符的 最大子字符串 示例: 输入: "Hello World" 输出: 5 来源:力扣(LeetCode) 链接:https://leetcode-cn....

HarvestWu的博客 734

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

58. 最后一个单词的长度[Leetcode 力扣 Java&C完整解答]

为什么我要给出完整解答,因为要搜索个题目的解答,很多都偷懒只给个方法的实现,结果跑都跑不起来。于是我就决定,每一题,都给出Java&C两种完整的解答,直接就可以运行,Debug。 题目链接: 最后一个单词的长度 给定一个仅包含大小写字母和空格 ’ ’ 的字符串,返回其最后一个单词的长度。 如果不存在最后一个单词,请返回 0 。 说明:一个单词是指由字母组成,但不包含任何空格的字符串。 ...

向小凯同学学习 693

LeetCode第58题---最后一个单词的长度

LeetCode第58题---最后一个单词的长度 问题描述 给定一个仅包含大小写字母和空格' '的字符串 s,返回其最后一个单词的长度。 如果字符串从左向右滚动显示,那么最后一个单词就是最后出现的单词。 如果不存在最后一个单词,请返回 0。 说明:一个单词是指仅由字母组成、不包含任何空格的 最大子字符串。 示例: 输入: "He...

Jonh_的博客 308

Java实现 LeetCode 58 最后一个单词的长度

58. 最后一个单词的长度 给定一个仅包含大小写字母和空格 ’ ’ 的字符串 s,返回其最后一个单词的长度。 如果字符串从左向右滚动显示,那么最后一个单词就是最后出现的单词。 如果不存在最后一个单词,请返回 0 。 说明:一个单词是指仅由字母组成、不包含任何空格的 最大子字符串。 示例: 输入: “Hello World” 输出: 5 class Solution { public in...

南 墙 1万+

58. 最后一个单词的长度

题目 58. 最后一个单词的长度 题解 代码 import java.util.*; public class code58 { public static int lengthOfLastWord(String s) { String str = s.trim(); if (str == "") { return 0; ...

dev_zyx的博客 430

LeetCode 力扣 58. 最后一个单词的长度

题目描述(简单难度) 输出最后一个单词的长度。 解法一 直接从最后一个字符往前遍历,遇到空格停止就可以了。不过在此之前要过滤到末尾的空格。 public int lengthOfLastWord(String s) { int count = 0; int index = s.length() - 1; //过滤空格 while (true) { ...

wind_liang的博客 1184

leetcode58:最后一个单词的长度(尾指针逆向扫描,结合151反转字符串对比)

本文介绍了LeetCode 58题"最后一个单词的长度"的解法。题目要求返回字符串中最后一个单词的长度,单词由字母组成,前后可能有空格。解题思路是逆向扫描字符串:先跳过尾部空格,再统计连续字母个数直到遇到空格或字符串开始。Java实现时间复杂度O(N),空间复杂度O(1)。与151题"反转字符串中的单词"相比,本题只需处理最后一个单词,无需复杂操作。逆向扫描是处理尾部相关字符串问题的有效方法。

lyh2004_08的博客 755

力扣练手58 最后一个单词的长度Java版

题目描述 给定一个仅包含大小写字母和空格 ' ' 的字符串,返回其最后一个单词的长度。 如果不存在最后一个单词,请返回 0 。 说明:一个单词是指由字母组成,但不包含任何空格的字符串。 示例: 输入: "Hello World" 输出: 5 我首先想到的是split 但感觉好像不太好 换了种思路:从尾开始遍历 package leetcode.easy.week01; publi...

minyunfei6的博客 280

【Leetcode:58. 最后一个单词的长度 + 模拟】

【Leetcode:58. 最后一个单词的长度 + 模拟】 给你一个字符串 s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度。单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。

Coder_ljw的博客 486

leetcode-第58题-最后一个单词的长度

博主并没有什么算法基础,所以写的不好,勿喷,抛砖引玉,欢迎交流,感谢。 //给定一个仅包含大小写字母和空格 ' ' 的字符串 s,返回其最后一个单词的长度。如果字符串从左向右滚动显示,那么最后一个单词就是最后出现的单词。 // 如果不存在最后一个单词,请返回 0 。 // 说明:一个单词是指仅由字母组成、不包含任何空格字符的 最大子字符串。 // 示例: // 输入: "Hello World" //输出: 5 // Related Topics 字符串 // ???? 239 ???? 0 p

itjavaee的博客 729

【LeetCode】[58] 最后一个单词的长度

思路不够清晰,想复杂了,情况考虑的不够周全,惨不忍睹的 提交/通过比。。。 /* * @lc app=leetcode.cn id=58 lang=java * * [58] 最后一个单词的长度 * * https://leetcode-cn.com/problems/length-of-last-word/description/ * * algorithms * Easy (2...

Watson的博客 207
上一篇: java数据结构与算法刷题-----LeetCode104:二叉树的最大深度
下一篇: java数据结构与算法刷题-----LeetCode108:将有序数组转换为二叉搜索树
ydenergy_殷志鹏
博客等级 码龄7年 5886粉丝 543原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ydenergy_殷志鹏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值