Leetcode22

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 characters only.

Example:

Input: "Hello World"
Output: 5

给出一组由大小写单词和空格组成的字符串,求字符串中最后一个单词的长度

第一反应是用空格分离然后拿最后一个元素,结果有一个情况没考虑到,比如说如果最后一个字符是空格,结果 WA 了七八次,想问题还是不够全面,最终做出来了,可以先把前后的空格 strip 掉,然后再走上面的思路

class Solution(object):
    def lengthOfLastWord(self, s):
        """
        :type s: str
        :rtype: int
        """
        return len(s.strip().split(" ")[-1])
        

不过这种方法时间复杂度很高,如果字符串很长就会死的很惨,去讨论区看了下,得出如下的方法

class Solution(object):
    def lengthOfLastWord(self, s):
        """
        :type s: str
        :rtype: int
        """
        trailler_pointer = -1
        lenofs = len(s)
        
        # find the position of last trailer space
        while trailler_pointer >= -lenofs and s[trailler_pointer] == ' ':
            trailler_pointer -= 1
        
        word_pointer = trailler_pointer
        while word_pointer >= -lenofs and s[word_pointer] != ' ':
            word_pointer -= 1
        
        return trailler_pointer - word_pointer

答主称之为快慢指针法,下面我来描述下思路,就是先找出最后一个空字符串的位置,然后基于空字串的位置再找最后一个单词的位置,最后相减就是结果,清晰明了

今天看了下极客时间的程序员的数学课专栏试读部分,其中提到程序是数学的扩展,想学好数学要以实用为准,我觉得对算法也是一样,可是刷 leetcode 是不是算实用的一种,但总归算是一种对逻辑能力的锻炼,不是坏事

希望以后可以在实际工作场景中用到学过的算法

当局者迷,旁观者清,当你能自己做自己的旁观者的时候就厉害了,没到这种境界的时候还是多听听长者的建议


Recent posts

Leetcode30

ElasticSearch 系列(一)

Mysql 分区表实践

Kafka 入门

Hugo 安装


Related posts

Leetcode30

Leetcode29

Leetcode28

Leetcode27

Leetcode26

Leetcode25

Leetcode24


Archives

2020 (11)
2019 (56)