专栏首页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

数据结构算法不用抖,

大厂面试笔试不用愁!

本文分享自微信公众号 - java工会(javagonghui),作者:除却巫山

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-03-24

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 导致程序崩溃的一行代码,你有写过吗?

    初学编程时,可能经常遇到一些程序崩溃的现象。一般来说,程序崩溃由于操作不当引起的。但是有时候,因为一个程序员的粗心,正式版本的程序出现崩溃状况这就很不因该了。之...

    三哥
  • 完整的java数组操作应用知识汇总

    数组是一种非常有用和常用的数据类型,存在于每种程序语言之中,java中的数组是一种最简单的复合数据类型,刚学习java数组的小白们大多都会听到一句这样的话:ja...

    三哥
  • 算法养成记:删除排序数组中的重复项

    Given a sorted array nums, remove the duplicates in-place such that each element...

    三哥
  • .Net网站下使用Oracle数据库的环境设置

    在.Net网站下使用Oracle,需要网站服务器安装Oracle数据库的客户端,这是目前必须要安装的。 以下是在Windows Server 2008 R2服务...

    徐大嘴
  • BERT大火却不懂Transformer?读这一篇就够了

    编者按:前一段时间谷歌推出的BERT模型在11项NLP任务中夺得SOTA结果,引爆了整个NLP界。而BERT取得成功的一个关键因素是Transformer的强大...

    大数据文摘
  • 解密:OpenAI和DeepMind都用的Transformer是如何工作的

    Transformer 是为解决序列转换或问题而设计的架构,该任务将一个输入序列转化为一个输出序列。 语音识别、文本转语音等问题都属于这类任务。

    机器之心
  • 自然语言处理背后的算法基本功能

    NLP是人与机器之间的沟通,使得机器既可以解释我们的语言,也可以就此作出有效回答。自20世纪50年代以来,这个领域一直存在,你可能听说过Alan Turing开...

    商业新知
  • 自然语言处理背后的数据科学

    NLP是人与机器之间的沟通,使得机器既可以解释我们的语言,也可以就此作出有效回答。自20世纪50年代以来,这个领域一直存在,你可能听说过Alan Turing开...

    CDA数据分析师
  • 自然语言处理背后的数据科学

    NLP是人与机器之间的沟通,使得机器既可以解释我们的语言,也可以就此作出有效回答。自20世纪50年代以来,这个领域一直存在,你可能听说过Alan Turing开...

    大数据文摘
  • 自然语言处理背后的数据科学

    人类交流是能感知到的最迷人的特性之一。作为人类的一员,我知道人类之间如何互动是极其复杂的。我们经常发送和接收错误的信息,或者我们的信息会被他人误解。每天我们都理...

    AI研习社

扫码关注云+社区

领取腾讯云代金券