前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >算法养成记:最后字符长度

算法养成记:最后字符长度

作者头像
三哥
发布2020-03-26 10:23:02
1K0
发布2020-03-26 10:23:02
举报
文章被收录于专栏:java工会java工会

呆萌程序员

算法养成记

LeetCode58

Length of Last Word

Given a string s consists of upper/lower-case alphabets and empty space characters ' ', return the length of last word (last word means the last appearing word if we loop from left to right) in the string.

If the last word does not exist, return 0.

Note: A word is defined as a maximal substring consisting of non-space characters only.

Example:

Input: "Hello World"

Output: 5

中文意思就是:

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

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

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

示例:

输入: "Hello World"

输出: 5

偷个懒,也是一个很不要脸的方法:

Java字符串中带有方法split(String regex),将字符串按照regex拆分成字符串数组;

所以将字符串根据空格拆分成数组,之后统计最后一个字符串长度即可。

我们目的是计算最后一个单词的长度。

所以需要两个指针

指针1:从后往前找,找到第一个不为空的位置;

指针2:在指针1的基础上,继续往前找,找到第一个为空的位置;

两个指针相减,则为最后一个单词长度。

定义一个变量length,从后遍历,遇到不为空的字符就加1;

遇到空,且长度不为0,则返回;

这里有个问题,有一起学习的小伙伴给出下面的方法:

差别就在于,将字符串转成了字符数组,之后再遍历字符数组。这里也不是说不可以。我们可以看到String在Java中的源码,值就是使用 char数组存储的,也就是字符串字符是可以随机取得,没必要再转成字符数组。

我们也可以看看toCharArray()具体干了什么;

从下图源码我们可以看到,它是复制了原字符串中,新返回了一个字符数组,总体来说代价是不划算的。

在实际测试里

执行用时分别是:0ms,0ms,0ms

内存消耗分别是:37.7MB,37.6MB,37.8MB

添加微信进群学习:miraclesComing

数据结构算法不用抖,

大厂面试笔试不用愁!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-03-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 java工会 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档