使用 Go 解決 LeetCode 問題:58. Length of Last Word

Description

Given a string s consists of upper/lower-case alphabets and empty space characters ‘ ‘, return the length of last word (last word means the last appearing word if we loop from left to right) in the string.

If the last word does not exist, return 0.

  • Note:

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

  • Example:
1
2
Input: "Hello World"
Output: 5

Solution

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
func lengthOfLastWord(s string) int {
// 建立一個游標
cursor := len(s)

// 從字串尾巴開始疊代
for ; cursor > 0; cursor-- {
// 如果發現不是空格就結束迴圈
if s[cursor-1] != byte(' ') {
break
}
}

// 使用游標進行右切截
s = s[:cursor]

// 從字串尾巴開始疊代
for ; cursor > 0; cursor-- {
// 如果發現是空格就結束迴圈
if s[cursor-1] == byte(' ') {
break
}
}

// 使用游標進行左切截
s = s[cursor:]

// 返回切截後的字串長度
return len(s)
}

Note

假設有以下參數:

1
s: "Hello World"

說明:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
右切截:

當 cursor 為 11 時,發現 d 不是空格,結束當前迴圈。

--------------------
c
Hello World
--------------------

對字串進行右切截。

--------------------
Hello World
--------------------

左切截:

cursor 為 11,d 不是空格。

--------------------
c
Hello World
--------------------

cursor 為 10,l 不是空格。

--------------------
c
Hello World
--------------------

cursor 為 9,r 不是空格。

--------------------
c
Hello World
--------------------

cursor 為 8,o 不是空格。

--------------------
c
Hello World
--------------------

cursor 為 7,W 不是空格。

--------------------
c
Hello World
--------------------

cursor 為 6,發現空格,結束當前迴圈。

--------------------
c
Hello World
--------------------

對字串進行左切截:

--------------------
World
--------------------

最終返回:5

Code