华为OD机试 - 字符串最后一个单词的长度(Python/JS/C/C++ 牛客练习题 HJ1)

在这里插入图片描述

华为OD机试 2025A卷题库疯狂收录中,刷题点这里

专栏导读

本专栏收录于《华为OD机试真题(Python/JS/C/C++)》

刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新。

一、题目描述

计算字符串最后一个单词的长度,单词以空格隔开,字符串长度小于5000。(注:字符串末尾不以空格为结尾)。

二、输入描述

输入一行,代表要计算的字符串,非空,长度小于5000。

三、输出描述

输出一个整数,表示输入字符串最后一个单词的长度。

四、测试用例

测试用例1

1、输入

Hello World

2、输出

5

3、说明

最后一个单词 “World” 长度为 5。

测试用例2

1、输入

fly me to the moon

2、输出

4

3、说明

最后一个单词 “moon” 长度为 4。

五、解题思路

  1. 读取输入的字符串;
  2. 初始化一个变量 len 用于记录最后一个单词的长度,初始值为 0;
  3. 遍历字符串的每个字符:
    • 如果当前字符是空格,则将 len 重置为 0;
    • 如果当前字符不是空格,则将 len 增加 1。
  4. 输出 len 的值。

六、Python算法源码

# -*- coding: utf-8 -*-
# 定义主函数
def main():
    # 使用 input() 读取一行输入,并使用 strip() 去除可能的首尾空格
    s = input().strip()
    length = 0  # 初始化计数器,用于计算最后一个单词的长度
    # 遍历字符串中每个字符
    for ch in s:
        if ch == ' ':  # 如果当前字符为空格,则说明前面的单词结束,重置计数器
            length = 0
        else:
            length += 1  # 否则,计数器累加1
    # 输出最后一个单词的长度
    print(length)

# 程序入口
if __name__ == '__main__':
    main()

七、JavaScript算法源码

/**
 * 主函数:读取输入并计算字符串最后一个单词的长度
 */
function main() {
    // 引入 Node.js 的 readline 模块,用于读取标准输入
    const readline = require('readline');
    const rl = readline.createInterface({
        input: process.stdin,   // 标准输入
        output: process.stdout  // 标准输出
    });

    // 监听输入行事件
    rl.on('line', (line) => {
        let length = 0;  // 初始化计数器
        // 遍历输入字符串的每个字符
        for (let i = 0; i < line.length; i++) {
            if (line[i] === ' ') { // 如果当前字符为空格,重置计数器
                length = 0;
            } else {
                length++;  // 否则,计数器累加1
            }
        }
        // 输出最后一个单词的长度
        console.log(length);
        rl.close();  // 关闭 readline 接口
    });
}

// 调用主函数
main();

八、C算法源码

#include <stdio.h>
#include <string.h>

// 主函数
int main() {
    char s[5001]; // 定义一个字符数组,用于存储输入字符串(长度小于5000,加1用于存储结束符)
    // 使用 fgets 读取一整行输入
    if (fgets(s, sizeof(s), stdin) != NULL) {
        int length = 0; // 初始化计数器,记录最后一个单词的长度
        int n = strlen(s); // 获取字符串的长度
        // 如果最后一个字符是换行符,则将其替换为字符串结束符
        if (n > 0 && s[n - 1] == '\n') {
            s[n - 1] = '\0';
        }
        // 遍历字符串中每个字符
        for (int i = 0; s[i] != '\0'; i++) {
            if (s[i] == ' ') { // 如果遇到空格,则重置计数器
                length = 0;
            } else {
                length++;  // 否则,计数器累加1
            }
        }
        // 输出最后一个单词的长度
        printf("%d", length);
    }
    return 0; // 程序结束
}

九、C++算法源码

#include <iostream>
#include <string>
using namespace std;

int main() {
    string s; // 定义字符串变量,用于存储输入的整行数据
    getline(cin, s); // 使用 getline 读取一整行输入
    int length = 0; // 初始化计数器,记录最后一个单词的长度
    // 遍历字符串中的每个字符
    for (char ch : s) {
        if (ch == ' ') { // 如果当前字符为空格,则重置计数器
            length = 0;
        } else {
            length++; // 否则,计数器累加1
        }
    }
    // 输出最后一个单词的长度
    cout << length;
    return 0; // 程序结束
}


🏆下一篇:华为OD机试真题 - 简易内存池(Python/JS/C/C++ 2025 A卷 200分)

🏆本文收录于,华为OD机试真题(Python/JS/C/C++)

刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

哪 吒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值