go语言刷题:58. 最后一个单词的长度

申明:本文只用做自己的学习记录

题目

一个字符串 s, 由若干单词组成, 单词之间用空格隔开, 返回字符串中最后一个单词的长度, 如果不存在最后一个单词, 请返回 0

单词 是指仅由字母组成、不包含任何空格字符的最大子字符串
示例 1:

输入:s = “Hello World”
输出:5
示例 2:

输入:s = " "
输出:0

代码

//解法1:
func lengthOfLastWord(s string) int {
	//根据空格分隔字符串
	slice := strings.Fields(s)
	//如果为空则返回0
	if slice == nil || len(slice) == 0 {
		return 0
	}
	//返回最后一位字符长度
	return len(slice[len(slice)-1])
}

//解法2:
//从右往左第一个没有空格的字符开始记录为i
//之后接在i的后面,继续向左遍历,遇到第一个空字符为止,i-j即为最后一位字符长度
func lengthOfLastWord(s string) int {
	i := len(s) - 1
	//从右往左,若一直是空格则一直往左走
	for i >= 0 && s[i] == ' ' {
		i--
	}
	//先从第一个没有空格的单词的最后一个字母起
	j := i
	for j >= 0 && s[j] != ' ' {
		j--
	}
	//i-j则为最后一个单词的长度
	return i - j
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值