美文网首页
58. 最后一个单词的长度

58. 最后一个单词的长度

作者: Hoker_ | 来源:发表于2018-12-07 23:38 被阅读0次
    继续做题,暂时先挑简单题目的来练习下C++的用法。

    题目描述:

    58. 最后一个单词的长度
    class Solution {
    public:
        int lengthOfLastWord(string s) {
            int len = s.length();
            int ans = 0;
            for(int i = len-1;i>=0;i--){
                // 先去除掉末尾的空格
                if(s[i] == ' ') continue;
                // 根据ans往回循环,同时根据i-ans来判断是否退出循环
                while(i-ans>=0 && s[i-ans]!=' '){
                    ans++;
                }
                return ans;
            }
            return ans;
        }
    };
    
    用例耗时

    有0ms的用例,看下啥样子:

    static const auto ban_io_sync = []()
    {
        std::ios::sync_with_stdio(false);
        cin.tie(nullptr);
        return 0;
    }();
    class Solution {
    public:
        int lengthOfLastWord(string s) {
            int slong = 0;
            int last_long = 0; // 记录最后一个word的长度
            for (int i = 0; i < s.size(); i++){
                if (s[i] == ' '){ // 每次遇到空格,就重新计算单词长度
                    slong = 0;
                }
                else{
                    slong++;
                    last_long = slong; 
                }
            }
            return last_long;
        }
    };
    

    主要还是对用例读取做了下io的优化,排开IO这部分,个人认为这种的代码没有最开始的好,他是读出所有的单词的长度,然后选取最大的,不如直接从后面读的算法。

    相关文章

      网友评论

          本文标题:58. 最后一个单词的长度

          本文链接:https://www.haomeiwen.com/subject/hprfhqtx.html