【算法】LeetCode算法题-Length Of Last Word

这是悦乐书的第155次更新,第157篇原创

01 看题和准备

今天介绍的是LeetCode算法题中Easy级别的第14题(顺位题号是58)。给定一个字符串,包含戴尔字母、小写字母和空格,返回最后一个单词的长度,如果最后一个单词不存在则返回0。另外,单词不包含空格。例如:

输入: "Hello World"

输出: 5

说明:最后一个单词为world,其长度为5

本次解题使用的开发工具是eclipse,jdk使用的版本是1.8,环境是win7 64位系统,使用Java语言编写和测试。

02 第一种解法

第一步考虑特殊情况,传入的字符串全部由空格组成,这时可以直接返回0。

第二步,获取最后一个单词结束字符的位置。

既然是获取最后一个单词,那么最后一个单词的情况分两种:以单词结尾;不已单词结尾,后面还带了空格。

先将字符串转为字符数组,从后往前依次获取每一个字符,如果遇到空格,继续向前循环,直到第一个字符;反之则表示遇到了一个单词,将其位置记录为end。

第三步,获取最后一个单词开始字符的位置。接着第二步的索引继续向前判断,不过判断的条件变成了不等于空格,直到条件不满足,则表示此单词已经查找完毕,将其位置记录为start。

第三步,用end减去start,即为最后一个单词的长度。

public int lengthOfLastWord(String s) {
    if("".equals(s.trim())) { return 0; }
    int n = s.length()-1;
    char[] ch = s.toCharArray();
    while (n >= 0 && ch[n] == ‘ ‘) {
        n--;
    }
    int end = n;
    while(n >= 0 && ch[n] != ‘ ‘) {
        n--;
    }
    int start = n;
    return end - start;
}

03 第二种解法

既然此字符串是由大小写字母和空格组成,那么是否可以使用空字符串将其分割为多个子字符串?如果原字符串不包含空格,那么分割后还是该字符串;如果包含字符串,那么最后一个被分割出来的子字符串就是我们想要的最后的一个单词。和第一种解法最开始一样,特殊情况也是要考虑进去的。

public int lengthOfLastWord2(String s) {
    if("".equals(s.trim())) { return 0; }
    if (s.length() ==0 || s.indexOf(" ") == -1) {
        return s.length();
    }
    String[] arr = s.split(" ");
    return arr[arr.length-1].length();
}

04 第三种解法

将原字符串首尾的空格去掉,然后找到最后一次出现空格的位置,两者相减再减1即为最后单词的长度。

public int lengthOfLastWord3(String s) {
    return s.trim().length()-s.trim().lastIndexOf(" ")-1;
}

05 小结

以上就是全部内容,如果大家有什么好的解法思路、建议或者其他问题,可以下方留言交流,点赞、留言、转发就是对我最大的回报和支持!

原文地址:https://www.cnblogs.com/xiaochuan94/p/9868564.html

时间: 2024-10-12 02:52:25

【算法】LeetCode算法题-Length Of Last Word的相关文章

Leetcode(58)题解:Length of Last Word

https://leetcode.com/problems/length-of-last-word/ 题目: Given a string s consists of upper/lower-case alphabets and empty space characters ' ', return the length of last word in the string. If the last word does not exist, return 0. Note: A word is de

【一天一道LeetCode】#58. Length of Last Word

一天一道LeetCode系列 (一)题目 Given a string s consists of upper/lower-case alphabets and empty space characters ' ', return the length of last word in the string. If the last word does not exist, return 0. Note: A word is defined as a character sequence cons

leetcode || 58、Length of Last Word

problem: Given a string s consists of upper/lower-case alphabets and empty space characters ' ', return the length of last word in the string. If the last word does not exist, return 0. Note: A word is defined as a character sequence consists of non-

【LeetCode】58 - Length of Last Word

Given a string s consists of upper/lower-case alphabets and empty space characters ' ', return the length of last word in the string. If the last word does not exist, return 0. Note: A word is defined as a character sequence consists of non-space cha

LeetCode OJ:Length of Last Word(最后一个词的长度)

Given a string s consists of upper/lower-case alphabets and empty space characters ' ', return the length of last word in the string. If the last word does not exist, return 0. Note: A word is defined as a character sequence consists of non-space cha

Leetcode 细节实现 Length of Last Word

Length of Last Word Total Accepted: 17518 Total Submissions: 59526My Submissions Given a string s consists of upper/lower-case alphabets and empty space characters ' ', return the length of last word in the string. If the last word does not exist, re

LeetCode算法题-Word Pattern(Java实现)

这是悦乐书的第202次更新,第212篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第68题(顺位题号是290).给定一个模式和一个字符串str,找到str是否完全匹配该模式.完全匹配是指在模式中的字母和str中的非空单词之间存在一一对应的关系.例如: 输入:pattern ="abba",str ="dog cat cat dog" 输出:true 输入:pattern ="abba",str ="dog

Leetcode 算法题--ReverseWordsInString

翻转字符串,想到什么写什么...我的做法是先trim掉空格,然后从字符串尾部开始扫描,遇到空格则认为一个单词结束,然后copy这个单词.需要注意的地方在于当扫描到最后一个单词的第一个字母时(譬如the sky is blue的t字母),注意单词长度的自增逻辑. 网上还有人的做法是反转整个字符串,然后逐个翻转单词. 1 package edu.hust.sse.Problems; 2 3 //Given s = "the sky is blue", 4 //return "bl

【算法】LeetCode算法题-Count And Say

这是悦乐书的第153次更新,第155篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第12题(顺位题号是38).count-and-say序列是整数序列,前五个术语如下: 1 11 21 1211 111221 1被读作"一个一"或者11.第二项的值是第一项的读法. 11被读作"两个一"或者21.第三项的值是第二项的读法. 21被读作"一个二,两个一"或者1211.第四项的值是第三项的读法. 给定整数n,其中1≤n≤3