leetcode笔记: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.

For example,
Given s = "Hello World",
return 5.

二. 题目分析

该题的大意是,输入一串字符,输出最后一个单词的长度。

除了考虑一些基本的边界条件,该题没有过多的要求,也没有检测单词中是否含有'.'等非字母符号。可采用从前往后或从后往前遍历一次,期间经过少量判断语句即可记录单词的长度。

三. 示例代码

// 从前往后遍历
class Solution {
public:
    int lengthOfLastWord(string s) {
        int result = 0;
        if (s.size() < 1 || s == " ") return result;
        if (s[0] != ' ') result = 1;
        for (int i = 1; i < s.size(); ++i)
        {
            if (s[i] != ' ' && s[i - 1] == ' ') result = 1;
            if (s[i] != ' ' && s[i - 1] != ' ') ++result;
        }
        return result;
    }
};
// 从后往前遍历,更简洁的代码
int lengthOfLastWord(string s) {
    int index = s.size() - 1, result = 0;
    while (index >= 0 && isspace(s[index])) --index;
    while (index >= 0 && isalpha(s[index])) {
        ++result;
        --index;
    }
    return result;
}

四. 小结

该题的边界条件不算复杂,但若加入其他限制,也可以变成一道难题。

你可能感兴趣的:(LeetCode,C++,算法,String,length)