58.Length of Last Word:修订间差异

来自WHY42
(创建页面,内容为“=Description= {{LeetCode |id=length-of-last-word |no=58 |difficulty=Easy |category=String |collection=Top 150 |title=Length of Last Word |summary=Given a string s consisting of words and spaces, return the length of the last word in the string.}} A word is a maximal substring consisting of non-space characters only. Example 1: <syntaxhighlight lang="bash"> Input: s = "Hello World" Output: 5 </syntaxhighlight> Explanation: The last word is "World" with length…”)
 
 
第33行: 第33行:
Explanation: The last word is "joyboy" with length 6.
Explanation: The last word is "joyboy" with length 6.
== Two-pointers==
== Two-pointers==
{{Submission|runtime=0ms|memory=41.34MB|rp=100|mp=13}}
{{Submission|runtime=0ms|memory=41.34MB|rp=100|mp=95}}


<syntaxhighlight lang="java">
<syntaxhighlight lang="java">
第47行: 第47行:
         }
         }
         return right - left;
         return right - left;
    }
}
</syntaxhighlight>
== State machine==
{{Submission|runtime=0ms|memory=41.26MB|rp=100|mp=95.49}}
<syntaxhighlight lang="java">
class Solution {
    enum State {
        EMPTY,
        STRING,
        END
    }
    public int lengthOfLastWord(String s) {
        State state = State.EMPTY;
        int length = 0;
        for(int i = s.length() -1; i >= 0; i--) {
            switch(state) {
                case State.EMPTY: {
                    if(s.charAt(i) == ' ') break;
                    else {
                        state = State.STRING;
                        length ++;
                        break;
                    }
                }
                case State.STRING: {
                    if(s.charAt(i) != ' ') {
                        length ++;
                        break;
                    } else {
                        state = State.END;
                        break;
                    }
                }
                case State.END: return length;
                default: break;
            } 
        }
        return length;
     }
     }
}
}

2024年2月19日 (一) 14:45的最新版本

Description

#58 Length of Last Word Easy
String Top 150
Given a string s consisting of words and spaces, return the length of the last word in the string.

A word is a maximal substring consisting of non-space characters only.

Example 1:

Input: s = "Hello World"
Output: 5

Explanation: The last word is "World" with length 5. Example 2:

Input: s = "   fly me   to   the moon  "
Output: 4

Explanation: The last word is "moon" with length 4. Example 3:

Input: s = "luffy is still joyboy"
Output: 6

Explanation: The last word is "joyboy" with length 6.

Two-pointers

Runtime 0ms
Memory 41.34MB
class Solution {
    public int lengthOfLastWord(String s) {
        int right = s.length() -1;
        while(s.charAt(right) == ' ' && right > 0) {
            right --;
        }
        int left = right;
        while(left >= 0 && s.charAt(left) != ' ') {
            left --;
        }
        return right - left;
    }
}

State machine

Runtime 0ms
Memory 41.26MB
class Solution {
    enum State {
        EMPTY,
        STRING,
        END
    }
    public int lengthOfLastWord(String s) {
        State state = State.EMPTY;
        int length = 0;
        for(int i = s.length() -1; i >= 0; i--) {
            switch(state) {
                case State.EMPTY: {
                    if(s.charAt(i) == ' ') break;
                    else {
                        state = State.STRING;
                        length ++;
                        break;
                    }
                }
                case State.STRING: {
                    if(s.charAt(i) != ' ') {
                        length ++;
                        break;
                    } else {
                        state = State.END;
                        break;
                    }
                }
                case State.END: return length;
                default: break;
            }  
        }
        return length;
    }
}