zoukankan      html  css  js  c++  java
  • 58. 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.

    Hide Tags
     String
     

    链接: http://leetcode.com/problems/length-of-last-word/

    题解:

    从后向前遍历。

    Time Complexity - O(n), Space Complexity - O(1)。

    public class Solution {
        public int lengthOfLastWord(String s) {
            if(s == null || s.length() == 0)
                return 0;
            int i = s.length() - 1, count = 0;
            s = s.toLowerCase();
            
            while(i >= 0 && (s.charAt(i) > 'z' || s.charAt(i) < 'a') )
                i --;
            
            while(i >= 0 && s.charAt(i) != ' '){
                count ++;
                i --;
            }
                
            return count;
        }
    }

    Update:

    看一看以前的代码...完全不认识了...

    public class Solution {
        public int lengthOfLastWord(String s) {
            int count = 0;
            if(s == null || s.length() == 0)
                return count;
                
            for(int i = s.length() - 1; i >= 0; i--) {
                if(s.charAt(i) == ' ') {
                    if(count == 0)
                        continue;
                    else
                        break;
                }
                count++;
            }
            
            return count;
        }
    }

    二刷:

    还是跟一刷一样,从后向前遍历。

    Java:

    Time Complexity - O(n), Space Complexity - O(1)。

    public class Solution {
        public int lengthOfLastWord(String s) {
            if (s == null || s.length() == 0) {
                return 0;
            }
            int count = 0;
            for (int i = s.length() - 1; i >= 0; i--) {
                if (s.charAt(i) != ' ') {
                    count++;
                } else if (count > 0) {
                    break;
                }
            }
            return count;
        }
    }

    三刷:

    这道题属于基本很少能给人留下印象的题。从后向前遍历, 假如s.charAt(i)不为空格的时候,我们增加count, 否则,假如count = 0,我们还没找到单词,继续查找。 假如count > 0,说明我们已经找到并且计算了最后一个单词,返回count。 遍历数组以后也返回count,因为有可能字符串里就一个单词,没空格。 这分析写得比较糙...

    Java:

    Time Complexity - O(n), Space Complexity - O(1)。

    public class Solution {
        public int lengthOfLastWord(String s) {
            if (s == null) {
                return 0;
            }
            int count = 0;
            for (int i = s.length() - 1; i >= 0; i--) {
                if (s.charAt(i) != ' ') {
                    count++;
                } else if (count > 0) {
                    return count;
                }
            }
            return count;
        }
    }
  • 相关阅读:
    C++ 项目和资源导引
    C++ 类再探
    C++ 语句函数再探
    leetcode-174. Dungeon Game 地下城游戏
    34. Find First and Last Position of Element in Sorted Array + 二分
    leetcode-27. Remove Element删除元素
    git 使用入门
    MySQL数据库的启动与停止
    C++类型转换
    C++ 获取对象类型
  • 原文地址:https://www.cnblogs.com/yrbbest/p/4436383.html
Copyright © 2011-2022 走看看