华为机试-1 字符串最后一个单词的长度

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

http://www.nowcoder.com/questionTerminal/8c949ea5f36f422594b306a2300315da

题目描述

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

输入描述:

一行字符串,非空,长度小于5000。

输出描述:

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

示例1

输入

hello world

输出

5

解题思路

从后往前遍历

因为题目要求最后一个单词长度,我们如果从前往后遍历的话,假设长度为5000,会多余话费大量的时间,所以很明显我们可以从后往前遍历,直到遇到第一个空格为止。

如何找到字符串的尾部

如何寻找字符串末尾呢?可以用strlen( )函数,我这边考虑自己实现strlen( )。如何实现呢?可以直接遍历整个字符串,直到遇到'\0'为止,得到字符串长度idx,并用sp[idx-1]表示字符串的尾部。

c语言实现

#include <stdio.h>
#include <stdlib.h>

int main()
{
    char* sp;
    int idx = 0;
    int count = 0;
    sp = (char*)malloc(sizeof(char)*5000);
    gets(sp);
    while (sp[idx] != '\0')
    {
        idx++;
    }
    for (int i = idx-1; i >= 0; i--)
    {
       if (sp[i] != ' ')
        {
            count++;
        }
        else
        {
            break;
        }
    }
    printf("%d\n",count);
    free(sp);
    return 0;
}

c++实现

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

int main()
{
    string str;
    while (getline(cin,str))
    {
        int count = 0;
        for (int i = str.size()-1; i >= 0; i--  )
        {
            if (str[i] != ' ')
            {
                count++;
            }
            else{

                break;
            }
        }
        cout << count << endl;
    }
    return 0;
}
全部评论
sp[idx-1],为什么要减1
2 回复 分享
发布于 2021-07-30 09:20
cin 遇到空格就截止
点赞 回复 分享
发布于 2021-10-14 00:05
请问这里的str.size()-1是怎么回事啊?
点赞 回复 分享
发布于 2021-03-23 11:36

相关推荐

10-13 13:49
南京大学 财务
饿魔:笑死我了,你简直是个天才
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
16
9
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务