首页 > 编程语言 >算法:求最后一个单词的长度

算法:求最后一个单词的长度

时间:2024-07-23 16:53:27浏览次数:10  
标签:空格 遍历 space length 单词 算法 反向 长度

题目要求

 

解答1:暴力解决

class Solution(object):
    def lengthOfLastWord(self, s):
        """
        :type s: str
        :rtype: int
        """
        input_list = [i for i in s.split(" ") if i!="" ]
        return len(input_list[-1])

这种解决方式,简单粗暴,没有考虑题目的要求,下面做一下优化。

解答2:反向遍历

class Solution(object):
    def lengthOfLastWord(self, s):
        """
        :type s: str
        :rtype: int
        """
        # 统计长度
        length=0
        # 设置是否为空格的标志
        is_space=False
        # 反向遍历 s
        for i in reversed(s):
            # 判读是否为字符
            if i.isalpha():
                length+=1
                is_space=True
            # 若为空格
            elif is_space:
                break
        return length

第二种方法,考虑了题目要求,因为是求的最后一个元素的长度,那就反向遍历,若字符遍历结束后遇到空格,就结束该循环,空间复杂度从O(N)->O(1)

标签:空格,遍历,space,length,单词,算法,反向,长度
From: https://www.cnblogs.com/TW-NLP/p/18318876

相关文章

  • Johnson 全源最短路算法以及 Primal-Dual 原始对偶算法
    Johnson全源最短路算法引入:多源最短路问题,设点数为\(n\)边数为\(m\)。我们有如下方案:floyd,时间复杂度\(O(n^3)\),适合任意图。Bellman-ford(SPFA),时间复杂度\(O(n^2m)\),适合任意图。Dijkstra,时间复杂度\(O(nm\logm)\),适合非负权图。综上分析,我们发现:Dijkstra的时间......
  • 代码随想录算法训练营第20天 | 二叉搜索树中级
    2024年7月22日题235.二叉搜索树的最近公共祖先普通解法还是和普通的祖先一样求即可,再依据搜索树特性进行剪枝即可加速。importjava.util.*;classSolution{Vector<TreeNode>vec1;Vector<TreeNode>vec2;intflag1=0;intflag2=0;publicT......
  • 简单架构:采集库dll、检测算法dll、项目程序exe,框架库dll
    一般项目exe通过调用各种封装的dll来完成工作。视觉项目exe调用采集库dll、检测算法dll就可以了,有一定积累后凝练出框架库dll(日志、队列、线程池等必不可少的部分封装)它们之间通过“接口函数+数据”来配合。针对采集dll:IGrabber.h里放接口函数,如开始采集、停止采集、set参数......
  • 【论文解读】大模型算法发展
    一、简要介绍 论文研究了自深度学习出现以来,预训练语言模型的算法的改进速度。使用Wikitext和PennTreebank上超过200个语言模型评估的数据集(2012-2023年),论文发现达到设定性能阈值所需的计算大约每8个月减半一次,95%置信区间约为5到14个月,大大快于摩尔定律下的硬......
  • 代码随想录算法训练营第18天 | 二叉搜索树进阶
    2024年7月20日题530.二叉搜索树的最小绝对差使用递归获取中序遍历,然后遍历一遍vector即可得到结果。importjava.util.*;classSolution{Vector<Integer>vec;publicintgetMinimumDifference(TreeNoderoot){//首先得到中序遍历的结果vec......
  • # 代码随想录算法训练营第38天 | 01背包问题:1049.最后一块石头的重量II(最多能装多少)、
    1049.最后一块石头的重量IIhttps://leetcode.cn/problems/last-stone-weight-ii/代码随想录https://programmercarl.com/1049.最后一块石头的重量II.html#算法公开课494.目标和https://leetcode.cn/problems/target-sum/description/代码随想录https://programmercarl.com......
  • 目标检测算法
    目标检测算法是计算机视觉领域中的一项核心技术,旨在从图像或视频中识别和定位一个或多个特定对象实例。这些算法不仅需要确定对象的位置(如通过边界框),还需要识别对象的类别(如人、汽车、狗等)。随着深度学习技术的快速发展,基于深度神经网络的目标检测算法已成为主流,并在各种应......
  • 离线分治算法:cdq 分治
    \(\texttt{0x00}\):前置芝士归并排序;树状数组;重载运算符(这个大概都会吧)。\(\texttt{0x01}\):介绍cdq分治是一种离线分治算法,可用来处理以下几种问题:解决和点对有关的问题。1D动态规划的优化与转移。通过CDQ分治,将一些动态问题转化为静态问题。它们的本质都是通过一......
  • Python-深度学习算法实用指南-全-
    Python深度学习算法实用指南(全)原文:zh.annas-archive.org/md5/844a6ce45a119d3197c33a6b5db2d7b1译者:飞龙协议:CCBY-NC-SA4.0前言深度学习是人工智能领域最受欢迎的领域之一,允许你开发复杂程度各异的多层模型。本书介绍了从基础到高级的流行深度学习算法,并展示了如何使用......
  • Andrew 算法求凸包
    Andrew算法求凸包参考资料:右手定则(baidu.com)内积和外积-OIWiki(oi-wiki.org)\(a\)与\(b\)相对位置\(b\)在\(a\)的逆时针方向:\(a\timesb>0\)顺负逆正(其实就是高中数学对于正负角的定义)凸包-OIWiki(oi-wiki.org)排序后最小和最大的元素为什么一......