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

问题描述

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

输入描述:

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

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

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)

八、总结一句话记住

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

相关推荐
coding者在努力5 小时前
算法竞赛中根据数据规模猜测算法
c++·算法·stl·时间复杂度
jing-ya5 小时前
day 59 图论part10
java·开发语言·数据结构·算法·图论
普贤莲花5 小时前
【2026年第11周---写于20260322】
程序人生·算法·leetcode
小白自救计划5 小时前
力扣知识点杂集
算法·leetcode·哈希算法
阿贵---5 小时前
分布式系统C++实现
开发语言·c++·算法
不染尘.5 小时前
最短路径之Bellman-Ford算法
开发语言·数据结构·c++·算法·图论
big_rabbit05026 小时前
JVM堆内存查看命令
java·linux·算法
m0_662577976 小时前
C++中的RAII技术深入
开发语言·c++·算法
旖-旎6 小时前
二分查找(点名)(8)
c++·算法·二分查找·力扣
承渊政道6 小时前
【优选算法】(实战体验滑动窗口的奇妙之旅)
c语言·c++·笔记·学习·算法·leetcode·visual studio