华为机试每日一练--第四题:字符串最后一个单词的长度

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

练习题入口

问题描述

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


输入描述:

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


输出描述:

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

c6fb890aef41669b26bb5e2e0e172614_watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5aiB5aiB5rKB5rKB,size_20,color_FFFFFF,t_70,g_se,x_16.png


解题分析

       本题有两个难点: 1、如何找到最后一个空格后单词  2、如果用户输入字符串中没有空格该如何判断


       基于在这道题,我们可以采用递归的方法,在递归函数里面传入字符串首元素地址并用字符型数组接受,并记录。接下来我们的目标就是找到空格或是‘\0’,让指针一直++,直到指针所指向的字符为空格为止。接着就把该地址继续传入递归函数中,而递归结束的条件就是找到'\0'。

ab7b514a65ccb623bdf70aa1badd32ed_watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5aiB5aiB5rKB5rKB,size_20,color_FFFFFF,t_70,g_se,x_16.png

       思路咱们已经分析完了,而这次字符串我们不能用scnaf("%s",arr)的方式来接收,因为


%s是以空格或回车作为结束标志的。

d49f01afd8ff57ede90b0ff17461cb69_watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5aiB5aiB5rKB5rKB,size_20,color_FFFFFF,t_70,g_se,x_16.png

        这次我们用fgets()函数来接收可以避免遇到空格就结束的问题,而fgets函数有个特点就是会吧'\n'也存储起来,所以最后统计字符串长度时要-1


(fgets具体讲解可以参照这篇:【C库函数】fgets详解)


代码实现

#include<stdio.h>
#include<string.h>
char* find(char* str)
{
    char* ret = str;
    while (*str != ' ' && *str != '\0')
    {
        str++;
    }
    if (*str != '\0')
    {
        str++;
        return find(str);
    }
    else {
        return ret;
    }
}
int main()
{
    char arr[1000];
    fgets(arr, 1000, stdin);
    int count = 0;
    char* len = find(arr);
    printf("%d\n", strlen(len) - 1);
    return 0;
}
相关文章
|
存储 Shell Android开发
基于Android P,自定义Android开机动画的方法
本文详细介绍了基于Android P系统自定义开机动画的步骤,包括动画文件结构、脚本编写、ZIP打包方法以及如何将自定义动画集成到AOSP源码中。
1145 2
基于Android P,自定义Android开机动画的方法
|
NoSQL Linux
Linux 如何查看一个进程的堆栈
有两种方法:第一种:pstack 进程ID 第二种,使用gdb 然后attach 进程ID,然后再使用命令 thread apply all bt   第三种:strace -f -p pid  该方法和pstack类似 第四中:gcore pid ,输出core文件,gdb cmd corefile 两种方法都可以列出进程所有的线程的当前的调用栈。
6681 0
|
数据挖掘 Shell BI
Python生成Excel文件
Python生成Excel文件
878 0
|
机器学习/深度学习 算法 数据可视化
基于BP神经网络的16QAM解调算法matlab性能仿真
这是一个关于使用MATLAB2022a实现的16QAM解调算法的摘要。该算法基于BP神经网络,利用其非线性映射和学习能力从复数信号中估计16QAM符号,具有良好的抗噪性能。算法包括训练和测试两个阶段,通过反向传播调整网络参数以减小输出误差。核心程序涉及数据加载、可视化以及神经网络训练,评估指标为误码率(BER)和符号错误率(SER)。代码中还包含了星座图的绘制和训练曲线的展示。
|
Java 数据库连接 测试技术
【mockito】单元测试之mockito简单使用
项目使用的是springmvc+mybatis 开发; mock包为 mockito-all;虽然也引用了powermock,但截至目前,还未使用到;如果使用到后续再补相关笔记。
|
云栖大会
一张图玩转云上办公
在2021云栖大会的云上办公展台,带来了充满科技感的“未来智慧办公室”,展示阿里巴巴企业智能解决方案在实际场景应用。
387 1
一张图玩转云上办公
如何安装 Angular CLI 并且检查 CLI 的版本
想在系统中安装 Angular CLI ,如何进行安装并且如何检查 CLI 的版本? 可以使用命令:npm install -g @angular/cli 进行安装。 使用命令 ng version 来查看 Angular 的 CLI 的版本
2607 0
|
NoSQL C语言
《C语言程序设计进阶教程》一2.7 在DDD(命令行调试程序)上检测调用栈
本文讲的是C语言程序设计进阶教程一2.7 在DDD(命令行调试程序)上检测调用栈,本节书摘来华章计算机《C语言程序设计进阶教程》一书中的第2章,第2.6.2节, Intermediate C Programming[美] 陆永祥(Yung-Hsiang Lu) 著 徐东 译 译更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1929 0