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

2020-05-28  本文已影响0人  Antus

题目描述

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

输入描述:
一行字符串,非空,长度小于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>。

上一篇下一篇

猜你喜欢

热点阅读