前言

博客里新开一个“用python手刃Leetcode”的专题,顾名思义,主要目的是记录自己在Leetcode上刷题的过程,代码全程用python3编写,所用网址是:leetcode中国。这个网址的好处是:1)纯中文,解决了英语不好读题困难的问题;2)网页打开速度快。

`

同时可以看到:目前官网给出的解题代码是用java编写的,并没有给出官方的python解答,本专栏除了尽量使用多种解法给出每道题的python3解答代码之外,还会记录下自己在做题过程中的一些收获和思考。便于以后复习查阅。

题目

给定一个仅包含大小写字母和空格 ' ' 的字符串,返回其最后一个单词的长度。

如果不存在最后一个单词,请返回 0 。

说明:一个单词是指由字母组成,但不包含任何空格的字符串。

示例:

输入: "Hello World" 输出: 5

一)不调用任何python包版本

1、首先,为了理解算法思想,先不调用任何函数手动撸个复杂的,思路如下:首先去除掉字符串末尾的空格:倒着遍历,判断是空格就把字符串长度减一,z直到遇到单词字母。接着从头开始遍历,遇到空格就把start指针移在该空格后的第一个单词上。直到遍历到最后一个单词的尾字母。最后返回n-start(n本来就比末尾索引大一,所以不需要加一了)

class Solution:

def lengthOfLastWord(self, s):

"""

:type s: str

:rtype: int

"""

n = len(s)

i = n-1

while i>= 0:

if s[i].isspace():#也可以:s[i] ==" "

n -= 1

i -= 1

else:

break

if n == 0:return 0

start = 0

for j in range(n):

if s[j].isspace():

start = j+1

return n-start

复制代码

2、当然,直接设置一个计数器计数也可以。

class Solution(object):

def lengthOfLastWord(self, s):

n = len(s)

i = n-1

while i>= 0:

if s[i].isspace():#也可以:s[i] ==" "

n -= 1

i -= 1

else:

break

counter=0

for i in (s.strip()):

if i == " ":

counter = 0

else:

counter += 1

return counter

复制代码

当然还有一种思路就是:可以先把字符串反转开始遇到的空格都删掉,从而将start指在遇到的第一个字母删,接着再遇到一个空格返回当前索引和start之间的长度,这个可以自己实现以下。

二)调用python特有的包版本

当然,在实际生活中遇到这种情况,当然没有必要自己费力实现,只需要借助python的了两个函数进行实现。

1) strip()。这个函数用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列,只要在首尾,有多少删多少。有趣的是,这个单词的意思就是剥光,剥除的意思,充分证明了python函数起名的通俗,生动。

例如:

str = "0000000你好啊0000000";

str.strip( '0' ); # str = "你好啊"

str2 = " 你好啊 "

str2.strip(); #str2="你好啊"

复制代码

注意:该方法只能删除开头或是结尾的字符,不能删除中间部分的字符。

另外,这个函数对于字符串可以不按照顺序匹配:

str = "123你好321231"

print (str.strip( '123' )) # str = "你好"

复制代码

2)) split()。这个函数通过按照指定的分隔符对字符串进行切片,并返回一个列表。它的英文意思有切分,切开的意思,命名同样很形象。

使用方法:str.split(str="分隔符", num=分割次数

其中str 默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等。也可以自己指定。

用法示例:

str = "你好 啊,我很 好,我们大家都很 好"

str.split(','); # str = ["你好 啊","我很 好","我们大家都很 好"]

str.split(',',1); # str = ["你好 啊","我很 好,我们大家都很 好"]

print str.split() #str = ["你好","啊,我很","好,我们大家都很","好"]

复制代码

借用这两个函数,这个题可以一行搞定:return len(s.strip().split(" ")[-1])

还是那句话,在实际使用中可以这么用,但是做算法题还是尽量自己手动实现一下,以理解算法思想。

python 单词长度_用python手刃leetcode(58):最后一个单词的长度【简单题】相关推荐

  1. 用python手刃Leetcode(1):两数之和【简单题】

    前言 博客里新开一个"用python手刃Leetcode"的专题,顾名思义,主要目的是记录自己在Leetcode上刷题的过程,代码全程用python3编写,所用网址是:leetco ...

  2. 用python手刃leetcode(58):最后一个单词的长度【简单题】

    前言 博客里新开一个"用python手刃Leetcode"的专题,顾名思义,主要目的是记录自己在Leetcode上刷题的过程,代码全程用python3编写,所用网址是:leetco ...

  3. Leetcode 58.最后一个单词的长度 (每日一题 20210705)

    给你一个字符串 s,由若干单词组成,单词之间用空格隔开.返回字符串中最后一个单词的长度.如果不存在最后一个单词,请返回 0 .单词 是指仅由字母组成.不包含任何空格字符的最大子字符串.示例 1:输入: ...

  4. LeetCode 58.最后一个单词的长度(python、c++)

    题目描述 给定一个仅包含大小写字母和空格 ' ' 的字符串 s,返回其最后一个单词的长度.如果字符串从左向右滚动显示,那么最后一个单词就是最后出现的单词. 如果不存在最后一个单词,请返回 0 . 说明 ...

  5. 跟我打卡LeetCode 58最后一个单词长度59螺旋矩阵Ⅱ60排列序列

    原创公众号:bigsai 关注后回复进群即可加入力扣打卡群,欢迎划水.近期打卡: LeetCode 47全排列Ⅱ&48旋转图像 LeetCode 49字母异位词分组&50pow(x,n ...

  6. leetcode 58. 最后一个单词的长度(C语言)

    题目 给定一个仅包含大小写字母和空格 ' ' 的字符串,返回其最后一个单词的长度. 如果不存在最后一个单词,请返回 0 . 说明:一个单词是指由字母组成,但不包含任何空格的字符串. 示例: 输入: & ...

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

    1. 题目 给定一个仅包含大小写字母和空格 ' ' 的字符串 s,返回其最后一个单词的长度. 如果字符串从左向右滚动显示,那么最后一个单词就是最后出现的单词. 如果不存在最后一个单词,请返回 0 . ...

  8. leetcode 58. 最后一个单词的长度(Length of Last Word)

    目录 题目描述: 示例: 解法: 题目描述: 给定一个仅包含大小写字母和空格 ' ' 的字符串,返回其最后一个单词的长度. 如果不存在最后一个单词,请返回 0 . 说明:一个单词是指由字母组成,但不包 ...

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

    题目描述: 给定一个仅包含大小写字母和空格 ' ' 的字符串,返回其最后一个单词的长度. 如果不存在最后一个单词,请返回 0 . 说明:一个单词是指由字母组成,但不包含任何空格的字符串. 示例: 输入 ...

最新文章

  1. css中position的几个值
  2. 百度搜索关键字如何排名?“网站SEO”告诉你答案
  3. command not found: shopt 的 ~/.bashrc
  4. 《盗墓笔记》使用的这套技术,让美术可以在场景中任意使用灯光
  5. ITM_win_agentCPU内存占用较高
  6. c++中的异常---3(系统标准异常库,编写自己异常类)
  7. python入口函数的作用_python之函数中参数的作用域
  8. 仅当使用了列列表并且 IDENTITY_INSERT 为 ON 时,才能为表'Address'中的标识列指
  9. 静态内部类实现单例_为什么用枚举类来实现单例模式越来越流行?
  10. Sublime Text关闭自动更新
  11. python 3.5.2 下载(带资源免费)
  12. AC日记——Sagheer, the Hausmeister codeforces 812b
  13. android checkboxpreference属性,如何更改android中CheckBoxPreference标题的文本颜色?
  14. SICK CLV650-6000固定式扫码枪参数配置
  15. 浏览器连不上 Flink WebUI 8081 端口
  16. 【JZOJ 省选模拟】6691.六道剑「一念无量劫」
  17. vba-msgbox用法详解
  18. 美拍视频怎么下载?美拍视频解析下载和保存工具
  19. 从零开始搭建Node.js, Express, Ejs, Mongodb服务器
  20. 软考中级 真题 2014年上半年 系统集成项目管理工程师 应用技术 下午试卷

热门文章

  1. 使用docker下载并安装mongodb5.0.5
  2. windows7中安装jdk1.8
  3. 基于Python+Django的图书馆管理系统
  4. 基于JAVA+SpringMVC+Mybatis+MYSQL的网上试衣间设计
  5. 搜狐畅游笔试题:1. 美丽的项链(动态规划) 2.多线程并发交替输出
  6. Linux—文件命令之touch命令
  7. SqlServer2008R2镜像(无域)
  8. DateTime 格式相比较,timestampdiff() 函数的运用
  9. Python 核实文件是否存在的函数
  10. 【转】vmware 安装 osx 无法登录 appstore 的解决办法 (伪造smbios设备信息)