0%

LeetCode.最后一个单词的长度

给定一个仅包含大小写字母和空格 ‘ ‘ 的字符串 s,返回其最后一个单词的长度。如果字符串从左向右滚动显示,那么最后一个单词就是最后出现的单词。如果不存在最后一个单词,请返回0。说明:一个单词是指仅由字母组成、不包含任何空格字符的 最大子字符串。

  • 示例:
    输入: “Hello World”
    输出: 5

解法:

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
 object LengthOfLastWord {
def main(args: Array[String]): Unit = {
println(lengthOfLastWord(""))
println(lengthOfLastWord(" "))
println(lengthOfLastWord("word"))
println(lengthOfLastWord("word "))
println(lengthOfLastWord(" word "))
println(lengthOfLastWord(" word word"))
println(lengthOfLastWord(" word word "))
println(lengthOfLastWord(" word"))

println(lengthOfLastWord2(""))
println(lengthOfLastWord2(" "))
println(lengthOfLastWord2("word"))
println(lengthOfLastWord2("word "))
println(lengthOfLastWord2(" word "))
println(lengthOfLastWord2(" word word"))
println(lengthOfLastWord2(" word word "))
println(lengthOfLastWord2(" word"))
}

def lengthOfLastWord(s: String): Int = {
if (s.length == 0) return 0
var end = s.length - 1
var start = 0
var i = end
var findEnd = false
while (i >= 0) {
if (!findEnd && s.charAt(i) == ' ') i -= 1
if (!findEnd && i >= 0 && s.charAt(i) != ' ') {
findEnd = true
end = i + 1
}
if (findEnd && s.charAt(i) == ' ') {
start = i + 1
i = -1
}
if (findEnd && i >= 0 && s.charAt(i) != ' ') i -= 1
}
if (findEnd) end - start else 0
}

def lengthOfLastWord2(s: String): Int = {
if (s.length == 0) return 0
var len = 0
for (i <- s.length - 1 to 0 by -1) {
if (s.charAt(i) != ' ') {
len += 1
} else {
if (len != 0) return len
}
}
len
}
}