未分類

Length of Last Word

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:*

1
2
Given s = "Hello World",
return 5.

Note: The sequence of integers will be represented as a string.

提示 解題應用
String 切割或反轉字串

Default:

1
2
3
func lengthOfLastWord(s string) int {
}

解答思路:

這題算是相當單純的字串處理,不是要從字串找字那樣的麻煩,僅僅要找字串中的最後一個字,這邊或許可以用字串中的切割,回傳拿到所有空白分割後每個字的陣列之後,將陣列的最後一個值的長度傳回即可,不過似乎不需要做到這樣,因為只要最後一個字,所以從字串的最後一個字元開始來算,最後碰上空白字元跳開就好,這邊只有一點要注意的是這個字串最後可能會有空白字元,你可以把前後字串的空白字元切掉(trim)在開始做,或者用判斷在後頭讀取時,一開碰上空白字元就略過也是一種方式。

程式碼解說:

這裡單純是利用迴圈將字串中的所有字元從尾端一一取出,直到最後取完長度為0才跳開,多加這個條件是除了防止給予的為空字串或取字串index值為-1之外,也有可能這個字串根本就只有一個字而沒有空格

1
2
3
4
5
6
7
8
9
var char string
length := len(s)
for true {
if length == 0 {
break
}
char = string(s[length-1])
length--
}

再來我這邊是判斷尾巴一開始是否有多餘的空格,沒有的話才開始計算最後的單字長度有多長,直到再次碰上空格就可以知道這個單字已經到底,所以就可以跳出整個迴圈了

1
2
3
4
5
6
if char != " " {
flag = true
result++
} else if flag {
break
}

完整程式碼:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
func lengthOfLastWord(s string) int {
var char string
length := len(s)
result := 0
flag := false
for true {
if length == 0 {
break
}
char = string(s[length-1])
if char != " " {
flag = true
result++
} else if flag {
break
}
length--
}
return result
}

總結:

難度不高的題目,要注意的只有給予的值可能只有一個單字或字串的尾巴有多餘的空格。

分享到