力扣面试经典算法150题:最后一个单词的长度

news2024/9/20 16:39:49

最后一个单词的长度

今天的题目是力扣面试经典150题中的数组的简单题: 最后一个单词的长度

题目链接:https://leetcode.cn/problems/length-of-last-word/description/?envType=study-plan-v2&envId=top-interview-150

题目描述

给定一个仅包含大小写字母和空格 ’ ’ 的字符串 s,请返回其最后一个单词的长度。如果字符串 s 中不存在最后一个单词,请返回 0。

  • 说明:
    一个单词是指由字母组成的,不包含任何空格的连续子串。
  • 示例:
    • 输入:
      “Hello World”
    • 输出:
      5
    • 解释:
      字符串中的最后一个单词是 “World”,它的长度是 5。
    • 输入:
      "a "
    • 输出:
      1
    • 解释:
      最后一个单词是 “a”,长度为 1。

题目分析

题目需求是获取字符串中最后一个单词的长度,那么我们需要对字符串的组成有充分了解。

根据题目中的设定,字符串是有单词与空格组合在一起形成,并且这个单词还是连续的字母组成,中间不会有空格存在。

这个题目很自然的就想到了直接用空格分割数组取最后一个非空元素的长度即可。

答案过于简单,于是想想还有没有其他方法。

由于字符串是空格隔开,单词都是连续的字母,那么我们倒序遍历字符数组,跳过第一个可能遇到的空格(字符串以空格结尾,符合题目中字符串的要求),从第一个字母字符开始进行计数,遇到下一个空格停止,得到到数就是最后一个字母的长度。

解题思路

  1. 直接分割:
    使用字符串的 split 方法分割字符串,得到所有单词。
    返回最后一个单词的长度。

  2. 从右向左遍历:
    从字符串的末尾开始向前遍历,直到遇到第一个非空格字符。
    继续向前遍历,直到遇到第一个空格字符。
    计算两个位置之间的距离,即为最后一个单词的长度。

实际算法代码

根据以上分析,我们可以写出以下代码:

public class LengthOfLastWord {
   
   public static void main(String[] args) {
        LengthOfLastWord solution = new LengthOfLastWord();

        // 示例数据
        String input = "Hello World";

        // 调用计算最后一个单词长度的方法
        int length = solution.lengthOfLastWord2(input);

        // 输出结果
        System.out.println("The length of the last word is: " + length);
    }

    /**
     * 计算最后一个单词的长度(倒序计数法)
     *
     * @param s 输入的字符串
     * @return 最后一个单词的长度
     */
    public int lengthOfLastWord2(String s) {
        int length = 0;
        int tail = s.length() - 1;

        // 移除末尾的空格
        while (tail >= 0 && s.charAt(tail) == ' ') {
            tail--;
        }

        // 计算最后一个单词的长度
        while (tail >= 0 && s.charAt(tail) != ' ') {
            length++;
            tail--;
        }

        return length;
    }

    /**
     * 计算最后一个单词的长度(分隔法)
     *
     * @param s 输入的字符串
     * @return 最后一个单词的长度
     */
    public int lengthOfLastWord1(String s) {
        String[] split = s.split(" ");
        return split[split.length-1].length();
    }

}

结果

上述代码中,我们分别编写了字符串分割法以及倒序计数法,两种方法都可行,并且都正常通过测试。

在这里插入图片描述

提交到力扣也没有问题:

在这里插入图片描述

不过提交到力扣以后,倒序计数法的评分要比分割法好一点,分割法胜在直接简便。

总结

今天的题目依旧比较简单,毕竟是简单题目,再过几天就上中等难度题目了。

加油!!!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Broken靶机

查看靶机的mac地址 使用kail进行扫描ip 探测靶机主机,端口,服务 nmap -sS -sS -A -p- 192.168.154.137 进行目录扫描 dirsearch -u http://192.168.154.137 拼接后没什么发现 访问靶机ip 访问readme.md 发现是十六进制的值 将内容写入到readme.md中 使…

坐牢第二十五天20240813(网络通信)

一、TCP机械臂测试 通过w(红色臂角度增大)s(红色臂角度减小)d(蓝色臂角度增大)a(蓝色臂角度减小)按键控制机械臂 注意:关闭计算机的杀毒软件,电脑管家,防火墙 1&#x…

C语言问答进阶--5、基本表达式和基本语句

赋值表达式 表达式是什么&#xff1f;表达式是由运算符和操作数组成的式子。 如下的代码 #include "iostream.h" int main() { int a1,b2,sum; cout<<(sumab)<<endl; return 0; } 那么如下的呢&#xff1f; #include "iostream.h" int mai…

智能建筑系统,实现智慧城市的可持续发展

智能建筑系统是指通过现代技术和通信技术&#xff0c;对建筑系统进行全方位、智能化的管理和控制。该系统可以通过各种传感器、安全监控系统和计算机设备对工程建筑的内外环境进行认知和控制&#xff0c;进而监控和管理建筑工程设备和信息。 智能建筑系统可以调节室温、湿度等环…

基于Hadoop的汽车大数据分析系统设计与实现【爬虫、数据预处理、MapReduce、echarts、Flask】

文章目录 有需要本项目的代码或文档以及全部资源&#xff0c;或者部署调试可以私信博主项目介绍爬虫数据概览HIve表设计Cars Database Tables1. cars_data2. annual_sales_volume3. brand_sales_volume4. city_sales_volume5. sales_volume_by_year_and_brand6. sales_distribu…

Mysql的完整性约束

主键约束&#xff1a;一个表中只有一个主键&#xff0c;通过主键找到唯一的记录。主键不能为空不能重复。 CREATE TABLE s1&#xff08;id TINYINT PRIMARY KEY UNSIGNEDINT AUTO_INCREAMENT,name VARCHAR(20) NOT NULL UNIQUE ,age TINYINT DEFAULT 18&#xff09;;…

镜像仓库认证信息加密初始化脚本

文章目录 一、场景说明二、脚本职责三、参数说明四、操作示例五、注意事项 一、场景说明 本自动化脚本旨在为提高研发、测试、运维快速部署应用环境而编写。 脚本遵循拿来即用的原则快速完成 CentOS 系统各应用环境部署工作。 统一研发、测试、生产环境的部署模式、部署结构、…

Python爬虫——爬取bilibili中的视频

爬取bilibili中的视频 本次爬取&#xff0c;还是运用的是requests方法 首先进入bilibili官网中&#xff0c;选取你想要爬取的视频&#xff0c;进入视频播放页面&#xff0c;按F12&#xff0c;将网络中的名称栏向上拉找到第一个并点击&#xff0c;可以在标头中&#xff0c;找到…

【研发日记】嵌入式处理器技能解锁(三)——TI C2000 DSP的C28x内核

文章目录 前言 背景介绍 C28x内核 浮点单元(FPU) 快速整数除法单元(FINTDIV) 三角数学单元(TMU) VCRC单元 CPU总线 指令流水线 总结 参考资料 前言 见《【研发日记】嵌入式处理器技能解锁(一)——多任务异步执行调度的三种方法》 见《【研发日记】嵌入式处理器技能解…

Linux--应用层自定义协议与序列化(例子:网络计算器)

目录 0.上篇文章 1.应用层 再谈一谈协议 网络版计算器 序列化 和 反序列化 2.重新理解 read、 write、 recv、 send 和 tcp 为什么支持全双工 3.网络计算器&#xff08;代码实现) 3.1序列化&反序列化的接口 3.2 项目逻辑 3.3 代码 3.3.1辅助库 3.3.2 基于TCP的…

非线性RCD负载:电力系统的智能管理

随着科技的不断发展&#xff0c;电力系统的规模日益扩大&#xff0c;复杂性也越来越高。在这种背景下&#xff0c;非线性RCD负载&#xff08;Resistive-Capacitive-Inductive load&#xff09;的出现&#xff0c;对电力系统的智能管理提出了新的挑战。非线性RCD负载是指由电阻、…

【学习笔记】Day 10

一、进度概述 1、《地震勘探原理》第三章 二、详情 3.1 野外工作概述 主要介绍地上与海上两种情况下的测量方法&#xff0c;这里不做详解&#xff0c;需要就看书。 其中简况分为&#xff1a;试验工作&#xff0c;生产工作过程&#xff0c;干扰波调查&#xff0c;干扰…

thinkphp8反序列化分析

thinkphp8反序列化 前言 摆了一个暑假&#xff0c;正好看见周会有人分析了tp反序列化&#xff0c;想起这条链子的发现者就是我尊敬的nivia&#xff0c;这不得好好分析一下&#xff0c;而且师傅也是分析了这个&#xff0c;所以有了这个文章 链子一 __call触发 分析 相比于我…

SpringSecurity+前端项目+redis完成认证授权的代码

1. 前端准备工作--都在全局main.js页面中设置的 1.1. 创建Vue工程后&#xff0c;并导入element ui和axios&#xff0c;添加连接后端项目的路径&#xff0c;把axios挂载到Vue 1.2. 前置路由守卫&#xff08;所有路由跳转前核实一下身份&#xff09; //前置路由守卫--所有的路由…

C++密码管理器

先问一句 最近有几个关注我的原力等级为0或-1&#xff0c;文章全是转载&#xff0c;转载时间基本都在2021年&#xff0c;而且关注了很多人&#xff0c;这些是僵尸粉吗&#xff1f; 文末有投票&#xff0c;麻烦参与一下谢谢 实现功能列表 暂时还没做加密功能 打算用openssl/a…

C++ STL初阶(9):list 中关于reverse_iterator的实现

在完成vector和list的iterator相关部分的实践后来完成反向迭代器的实现 1. list的反向迭代器 书接上回&#xff0c;反向迭代器应当重新封装一个类。 反向迭代器和正向迭代器最大的区别就是&#xff0c;反向迭代器是倒着走的&#xff0c;所以最核心的逻辑就是将封装成-- 注意&am…

数字化转型-成就智慧智慧企业

数字化转型是企业迈向智慧化发展的关键路径&#xff0c;通过将先进的数字技术融入企业核心业务&#xff0c;构建智能化、数据驱动的运营模式&#xff0c;实现业务的全面升级与优化。智慧企业的实现依托于几个核心要素&#xff1a;首先是数字基础设施的建设&#xff0c;包括云计…

浅述TSINGSEE青犀EasyCVR视频汇聚平台与海康安防平台的区别对比

在我们的很多项目中都遇到过用户的咨询&#xff1a;TSINGSEE青犀EasyCVR视频汇聚平台与海康平台的区别在哪里&#xff1f;确实&#xff0c;在安防视频监控领域&#xff0c;EasyCVR视频汇聚平台与海康威视平台是两个备受关注的选择。它们各自具有独特的功能和优势&#xff0c;适…

RSS 源:在信息洪流中找回你的时间掌控权

简单介绍了 RSS 后&#xff0c;那么关键的一步就是建立好自己的 RSS 源了。 并不是所有平台都会提供 RSS 源&#xff0c;因此我们也没办法直接去订阅。 目前使用 RSS 的难题之一就是 RSS 源的匮乏&#xff0c;是无数人重新拥抱 RSS 的第一大障碍。 那么&#xff0c;如何去找…

全球化浪潮下的数据库革新:嘉里物流 TiDB 实践价值的设想

导读 本文来自 TiDB 社区武汉站——嘉里物流架构团队负责人肖飞老师的演讲《嘉里物流 & TiDB 在全球化业务场景中应用设想》。本次分享探讨了嘉里物流在全球化扩展中&#xff0c;将如何通过 TiDB 的强大功能应对海量数据挑战&#xff0c;优化技术架构&#xff0c;并提升决…