字符串最后一个单词的长度

问题描述

对于给定的若干个单词组成的句子,每个单词均由大小写字母混合构成,单词间使用单个空格分隔。输出最后一个单词的长度。

输入描述:

在一行上输入若干个字符串,每个字符串代表一个单词,组成给定的句子。

除此之外,保证每个单词非空,由大小写字母混合构成,且总字符长度不超过

1

0

3

10

3

输出描述:

在一行上输出一个整数,代表最后一个单词的长度。

示例1

输入:

HelloNowcoder

复制

输出:

13

复制

说明:

在这个样例中,最后一个单词是

"HelloNowcoder"

"HelloNowcoder" ,长度为

13

13 。

示例2

输入:

A B C D

复制

输出:

1

一、题目理解

输入

一行字符串,由字母和空格组成。

输出

最后一个单词的长度。

单词定义:

由连续的字母组成,中间用空格分隔。

二、示例分析

示例 1

输入

HelloNowcoder

分析

整个字符串没有空格

说明只有 一个单词

最后一个单词:HelloNowcoder

长度:13

输出

13

示例 2

输入

A B C D

分析

单词依次是:A、B、C、D

最后一个单词:D

长度:1

输出

1

三、核心解题思路(非常重要)

这类题有 两种常见解法:

解法一:从后往前遍历(推荐)

思路

从字符串 末尾开始遍历

遇到字母就计数

遇到空格且已经开始计数 → 停止

为什么推荐?

不需要额外空间

一次遍历

面试非常加分

解法二:按空格分割字符串

思路

使用 strings.Fields() 按空格切分

取最后一个单词

返回其长度

优点

写起来简单

可读性强

缺点

需要额外内存

四、Go 语言标准解法(推荐版)

✅ 解法一:从后往前遍历(最优)

package main

import (

"bufio"

"fmt"

"os"

)

func main() {

reader := bufio.NewReader(os.Stdin)

// 读取整行输入

str, _ := reader.ReadString('\n')

复制代码
length := 0

// 从字符串末尾向前遍历
for i := len(str) - 1; i >= 0; i-- {
	if str[i] == ' ' || str[i] == '\n' {
		// 如果已经开始计数,遇到空格就结束
		if length > 0 {
			break
		}
		continue
	}
	length++
}

fmt.Println(length)

}

五、代码逐行讲解

reader := bufio.NewReader(os.Stdin)

str, _ := reader.ReadString('\n')

使用 bufio 读取一整行(包括空格)

length := 0

用来统计最后一个单词的长度

for i := len(str) - 1; i >= 0; i-- {

从字符串末尾开始遍历

if str[i] == ' ' || str[i] == '\n' {

if length > 0 {

break

}

continue

}

跳过末尾的空格或换行

一旦已经开始计数,再遇到空格 → 说明单词结束

length++

遇到字母,长度加 1

六、常见边界情况(面试会问)

输入 输出

"Hello" 5

"Hello World" 5

" Hello World " 5

"A" 1

" " 0

上面的代码 全部能正确处理。

七、时间 & 空间复杂度

时间复杂度:O(n)

空间复杂度:O(1)

八、总结一句话记住

从字符串末尾开始,数连续字母,遇到第一个空格即停。

相关推荐
程序员-King.2 小时前
day143—递归—对称二叉树(LeetCode-101)
数据结构·算法·leetcode·二叉树·递归
爱吃泡芙的小白白2 小时前
深入解析:2024年AI大模型核心算法与应用全景
人工智能·算法·大模型算法
阿崽meitoufa2 小时前
JVM虚拟机:垃圾收集器和判断对象是否存活的算法
java·jvm·算法
龙井茶Sky3 小时前
通过higress AI统计插件学gjson表达式的分享
go·gjson·higress插件
ballball~~3 小时前
拉普拉斯金字塔
算法·机器学习
Cemtery1163 小时前
Day26 常见的降维算法
人工智能·python·算法·机器学习
Ethan-D5 小时前
#每日一题19 回溯 + 全排列思想
java·开发语言·python·算法·leetcode
Benny_Tang5 小时前
题解:CF2164C Dungeon
c++·算法
仙俊红5 小时前
LeetCode174双周赛T3
数据结构·算法