Leetcode - Length of Last Word

Leetcode - Length of Last Word_第1张图片

My code:

public class Solution {
    public int lengthOfLastWord(String s) {
        if (s == null || s.length() == 0)
            return 0;
        int tail = s.length() - 1;
        for (int i = s.length() - 1; i >= 0; i--) {
            if (s.charAt(i) != ' ') {
                tail = i;
                break;
            }
            else
                continue;
        }
        int lastIndex = -1;
        for (int i = 0; i <= tail; i++) {
            if (s.charAt(i) == ' ')
                lastIndex = i;
        }
        if (lastIndex == -1)
            return tail + 1;
        else if (lastIndex == s.length() - 1)
            return 0;
        else
            return tail - lastIndex;
    }
    
    public static void main(String[] args) {
        Solution test = new Solution();
        System.out.println(test.lengthOfLastWord("a   bcs "));
    }
}

My test result:

Leetcode - Length of Last Word_第2张图片
Paste_Image.png

这道题目还是挺有意思的。需要先做个小处理,把尾巴后面的空格给去了,然后得到一个tail作为新的字符串的结束为止。
然后在开始遍历。然后考虑一些小细节。
String 类的简单题也不是很简单啊,都需要想一想。

**
总结: Array
**

Anyway, Good luck, Richardo!

My code:

public class Solution {
    public int lengthOfLastWord(String s) {
        if (s == null || s.length() == 0)
            return 0;
        for (int i = s.length() - 1; i >= 0; i--) {
            char curr = s.charAt(i);
            if (curr != ' ') {
                int j = i;
                while (j >= 1 && s.charAt(j - 1) != ' ')
                    j--;
                return i - j + 1;
            }
        }
        return 0;
    }
}

这道题木如果从前往后扫描,会有点烦。但是为什么不能从后往前扫呢?
从后往前扫,找到第一个不是空格的字母。然后单独处理。就行了。

Anyway, Good luck, Richardo!

My code:

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

简单题,从后往前扫描就行了。

Anyway, Good luck, Richardo! -- 09/17/2016

你可能感兴趣的:(Leetcode - Length of Last Word)