首页 > 其他分享 >[Leetcode] 0058. 最后一个单词的长度

[Leetcode] 0058. 最后一个单词的长度

时间:2023-10-17 20:22:38浏览次数:39  
标签:index 0058 字母 最后 单词 字符串 长度 Leetcode

58. 最后一个单词的长度

题目描述

给你一个字符串 s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度。

单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。

 

示例 1:

输入:s = "Hello World"
输出:5
解释:最后一个单词是“World”,长度为5。

示例 2:

输入:s = "   fly me   to   the moon  "
输出:4
解释:最后一个单词是“moon”,长度为4。

示例 3:

输入:s = "luffy is still joyboy"
输出:6
解释:最后一个单词是长度为6的“joyboy”。

 

提示:

  • 1 <= s.length <= 104
  • s 仅有英文字母和空格 ' ' 组成
  • s 中至少存在一个单词

解法

方法一:反向遍历

题目要求得到字符串中最后一个单词的长度,可以反向遍历字符串,寻找最后一个单词并计算其长度。

由于字符串中至少存在一个单词,因此字符串中一定有字母。首先找到字符串中的最后一个字母,该字母即为最后一个单词的最后一个字母。

从最后一个字母开始继续反向遍历字符串,直到遇到空格或者到达字符串的起始位置。遍历到的每个字母都是最后一个单词中的字母,因此遍历到的字母数量即为最后一个单词的长度。

时间复杂度 \(O(n)\),空间复杂度 \(O(1)\)。其中 \(n\) 为字符串 \(s\) 长度。

Python3

class Solution:
    def lengthOfLastWord(self, s: str) -> int:
        index = len(s)-1
        wordlength =0
        while(s[index]==' '):
            index -=1
        while(index >=0 and s[index]!=' '):
            wordlength +=1
            index -=1
        return wordlength

C++

class Solution {
public:
    int lengthOfLastWord(string s) {
        int index = s.size() -1;
        
        while(s[index] == ' '){
            index--;
        }
        int wordLength = 0;
        while(index >=0 && s[index] != ' '){
            wordLength++;
            index--;
        }
        return wordLength;
    }
};

标签:index,0058,字母,最后,单词,字符串,长度,Leetcode
From: https://www.cnblogs.com/yege/p/17770580.html

相关文章

  • [Leetcode] 0027. 移除元素
    27.移除元素题目描述给你一个数组nums和一个值val,你需要原地移除所有数值等于val的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用O(1)额外空间并原地修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。说明:......
  • leetcode200 岛屿数量
    链接https://leetcode.cn/problems/number-of-islands/description/思路跟岛屿周长差不多...但我觉得这个比岛屿周长还简单。不知道为什么这个算中等题目,岛屿周长算简单题目代码classSolution:defnumIslands(self,grid)->int:ifnotgridornotgrid[0]......
  • Leetcode707. 设计链表
    题目描述你可以选择使用单链表或者双链表,设计并实现自己的链表。单链表中的节点应该具备两个属性:val和next。val是当前节点的值,next是指向下一个节点的指针/引用。如果是双向链表,则还需要属性prev以指示链表中的上一个节点。假设链表中的所有节点下标从0开始。实现M......
  • #yyds干货盘点# LeetCode程序员面试金典:H 指数 II
    题目:给你一个整数数组 citations ,其中 citations[i] 表示研究者的第 i 篇论文被引用的次数,citations 已经按照 升序排列 。计算并返回该研究者的h 指数。h指数的定义:h代表“高引用次数”(highcitations),一名科研人员的 h 指数是指他(她)的(n 篇论文中)总共有 h 篇论......
  • #yyds干货盘点# LeetCode程序员面试金典:分发饼干
    1.简述:假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j,都有一个尺寸 s[j] 。如果 s[j] >=g[i],我们可以将这个饼干 j 分配给孩子 i ,这个孩......
  • leetcode274 H指数 —— 排序后遍历/差分 c++
    给你一个整数数组 citations ,其中 citations[i] 表示研究者的第 i 篇论文被引用的次数。计算并返回该研究者的 h 指数。根据维基百科上 h指数的定义:h 代表“高引用次数”,一名科研人员的 h 指数 是指他(她)至少发表了 h 篇论文,并且每篇论文 至少 被引用 h 次。......
  • [LeetCode] 260. 只出现一次的数字 III
    题目给你一个整数数组nums,其中恰好有两个元素只出现一次,其余所有元素均出现两次。找出只出现一次的那两个元素。你可以按任意顺序返回答案。你必须设计并实现线性时间复杂度的算法且仅使用常量额外空间来解决此问题。思路可以用哈希表um映射存储每一个输入的值,输入一次就给......
  • LeetCode 376. 摆动序列
    最长递增子序列题目链接:376.摆动序列题目描述:如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为**摆动序列。**第一个差(如果存在的话)可能是正数或负数。仅有一个元素或者含两个不等元素的序列也视作摆动序列。例如,[1,7,4,9,2,5]是一个摆动序列......
  • Leetcode203.移除链表元素
    题目描述给你一个链表的头节点head和一个整数val,请你删除链表中所有满足Node.val==val的节点,并返回新的头节点。示例提交的代码/***Definitionforsingly-linkedlist.*publicclassListNode{*intval;*ListNodenext;*ListNode(){}......
  • [Leetcode Weekly Contest]367
    链接:LeetCode[Leetcode]2903.找出满足差值条件的下标I给你一个下标从0开始、长度为n的整数数组nums,以及整数indexDifference和整数valueDifference。你的任务是从范围[0,n-1]内找出2个满足下述所有条件的下标i和j:abs(i-j)>=indexDifference且a......