题号:58. 最后一个单词的长度
给定一个仅包含大小写字母和空格 ' ' 的字符串 s,返回其最后一个单词的长度。如果字符串从左向右滚动显示,那么最后一个单词就是最后出现的单词 。
如果不存在最后一个单词,请返回 0 。
说明:一个单词是指仅由字母组成、不包含任何空格字符的 最大子字符串 。
示例:
输入: "Hello World" 输出: 5
思路一:从后往前循环字符串,当遇到第一个非空格字符的时候空格标志flag加1,否则不做操作继续下一次循环
思路二:巧用strings包提供的 Fields 方法 进行空白符切割,返回切割后的数组(文章最后有拓展 Fields用法介绍)
func lengthOfLastWord1(s string) int { if len(s) == 0 { return 0 } var flag = 0 for i := len(s)-1; i >= 0; i-- { if s[i] == ' ' { if flag > 0 { break } } else { flag ++ } } return flag }
func lengthOfLastWord(s string) int { list := strings.Fields(s) if len(list) == 0 { return 0 } s2 := list[len(list)-1] return len(s2) }
拓展:
Fields 以连续的空白字符为分隔符,将 s 切分成多个子串,结果中不包含空白字符本身 ;
如果 s 中只包含空白字符,则返回一个空列表 ;
func main() { str := "空格, 有空格, haha haha!" strList := strings.Fields(str) fmt.Printf("%q\n", strList)//["空格," "有空格," "haha" "haha!"] }
以上就是Fields()方法的基本用法了,如果了解请多,请看源码介绍
往期回顾:
【1】LeetCode-169. 多数元素(Goland实现)
【2】LeetCode-283. 移动零(Goland实现)
【3】LeetCode-38. 外观数列(Goland实现)