• 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了) 然后在里面找到第一个不等于空格的就返回就可以了。

  • 相关阅读:
    django 省 市 区 联动
    ACM/ICPC 之 Dinic算法(POJ2112)
    ACM/ICPC 之 网络流入门-EK算法(参考模板)(POJ1273)
    ACM/ICPC 之 网络流入门-Ford Fulkerson与SAP算法(POJ1149-POJ1273)
    ACM/ICPC 之 DFS求解欧拉通路路径(POJ2337)
    ACM/ICPC 之 DFS求解欧拉回路+打表(POJ1392)
    ACM/ICPC 之 暴力打表(求解欧拉回路)-编码(POJ1780)
    ACM/ICPC 之 昂贵的聘礼-最短路解法(POJ1062)
    ACM/ICPC 之 SPFA-兑换货币(POJ1860)
    ACM/ICPC 之 欧拉回路两道(POJ1300-POJ1386)
  • 原文地址:https://www.cnblogs.com/lixiaoyao123/p/10509838.html
Copyright © 2020-2023  润新知