58. 最后一个单词的长度

题目:

思路:

【1】既然找的是最后一个单词,那么正常的话肯定是反向遍历了会比较快(但是特殊情况,如把很多空格塞在最后的情况,这种情况如果太多了其实效率反倒是不如正向遍历),但是反向遍历的话肯定需要先排除不需要的字符,然后计算完第一个单词后就停下来,这种在正常情况下无疑是最优的。

代码展示:

//时间0 ms 击败 100%
//内存39.9 MB 击败 19.54%
class Solution {
    public int lengthOfLastWord(String s) {
        int index = s.length() - 1;
        while (s.charAt(index) == ' ') {
            index--;
        }
        int wordLength = 0;
        while (index >= 0 && s.charAt(index) != ' ') {
            wordLength++;
            index--;
        }
        return wordLength;
    }
}


//时间0 ms 击败100%
//内存39.9 MB击败21.35%
class Solution {
    public int lengthOfLastWord(String s) {
        int result = 0;
        for (int i = s.length()-1; i >= 0 ; i--){
            if (s.charAt(i) == ' ' && result == 0)
                continue;

            if (s.charAt(i) == ' ' && result != 0)
                return  result;

            result++;
        }

        return result;
    }
}

 

posted @ 2023-06-25 15:27  忧愁的chafry  阅读(4)  评论(0编辑  收藏  举报