美文网首页
2020-05-28华为机考题--字符串最后一个单词的长度(C语

2020-05-28华为机考题--字符串最后一个单词的长度(C语

作者: Antus | 来源:发表于2020-05-28 00:35 被阅读0次

    题目描述

    计算字符串最后一个单词的长度,单词以空格隔开。

    输入描述:
    一行字符串,非空,长度小于5000。

    输出描述:

    整数N,最后一个单词的长度。

    示例1

    hello world

    输出
    5

    算法思路:
    题目要求输出最后一个单词的长度,输入单词之间以空格隔开,从左向右查询,直至字符串中倒数第二个的"空格字符"才是最后一个单词的起始(字符串默认最后一个字符为空格‘\0’),这样查找起来效率不高而且比较复杂。可以反向查找,即从整个字符串末尾开始查找,假设字符串str的总长为s,则最后一个字符的位置为s-1(非末尾空字符),依次向前查找,找到下一个空格为止。过程中计算出到该空格的字符数,即最后一个单词的长度。
    程序设计:
    输入字符串:


    image.png

    题目未说明字符串大学,故需要申请动态内存大小,用到malloc函数,记住需引用头文件 #include<stdlib.h>
    字符串长度获取:
    最笨方法:直接计算


    image.png
    这里直接拿到的是整个字符串长度的大小,包含末尾‘\0’
    较简单方法:使用C内置方法 strlen(),该方法返回的是字符串的长度,不包含末尾的‘\0’,且需要引用头文件#include<string.h>
    image.png
    算法逻辑:当使用strlen()方法得到字符串长度leng,则最后一个字符下标为leng-1,我们需要判断leng-1是否为空格,是空格则返回当前计数,否则继续查找,直到有空格出现。
    image.png

    注意:isspace()函数是用来验证是否是空字符,需引用头文件<ctype.h>。

    相关文章

      网友评论

          本文标题:2020-05-28华为机考题--字符串最后一个单词的长度(C语

          本文链接:https://www.haomeiwen.com/subject/scvnahtx.html