Leecode刷题之旅-C语言/python-58.最后一个单词的长度

/*
 * @lc app=leetcode.cn id=58 lang=c
 *
 * [58] 最后一个单词的长度
 *
 * https://leetcode-cn.com/problems/length-of-last-word/description/
 *
 * algorithms
 * Easy (28.96%)
 * Total Accepted:    18.8K
 * Total Submissions: 65K
 * Testcase Example:  '"Hello World"'
 *
 * 给定一个仅包含大小写字母和空格 ' ' 的字符串,返回其最后一个单词的长度。
 * 
 * 如果不存在最后一个单词,请返回 0 。
 * 
 * 说明:一个单词是指由字母组成,但不包含任何空格的字符串。
 * 
 * 示例:
 * 
 * 输入: "Hello World"
 * 输出: 5
 * 
 * 
 */
int lengthOfLastWord(char* s) {
    int count=0;
    for(int i=strlen(s)-1;i>=0;i--){
        if(s[i]!=' ') count++;
        else if(count) break;
    }
    return count;
}

这道题的思路是,数组逆序查找,如果当前的值不是空格,就把计数器加一,如果是空格的话就break。

但是如果这么写的话就考虑不到后面几位是空格的情况。

所以加了一句 else if(count) break;

其实就是把多种情况融合成一种,就是当我们的计数器等于一的时候会有两种情况:

1.这个字符刚刚开始,我们刚统计。 

2.这个字符只有一个,下一个就是空格,我们就统计完了。

所以说接下来的判断就是如果有其他的字符的话,就继续计数器加一,没有的话,我们的计数器等于一,意味着下一位是空格,工作结束,直接break返回1即可。

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

python:

#
# @lc app=leetcode.cn id=58 lang=python3
#
# [58] 最后一个单词的长度
#
# https://leetcode-cn.com/problems/length-of-last-word/description/
#
# algorithms
# Easy (28.96%)
# Total Accepted:    18.8K
# Total Submissions: 65K
# Testcase Example:  '"Hello World"'
#
# 给定一个仅包含大小写字母和空格 ' ' 的字符串,返回其最后一个单词的长度。
# 
# 如果不存在最后一个单词,请返回 0 。
# 
# 说明:一个单词是指由字母组成,但不包含任何空格的字符串。
# 
# 示例:
# 
# 输入: "Hello World"
# 输出: 5
# 
# 
#
class Solution:
    def lengthOfLastWord(self, s: str) -> int:
        a = s.split(' ')
        a.reverse()
        for ss in a:
            if ss!='':
                return len(ss)
        return 0

python相对来说就很灵活了,先用split,按空格分开,形成一个数组,然后还是逆序(直接用reverse了) 然后在里面找到第一个不等于空格的就返回就可以了。

猜你喜欢

转载自www.cnblogs.com/lixiaoyao123/p/10509838.html