题解 | #字符串最后一个单词的长度#

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

https://www.nowcoder.com/practice/8c949ea5f36f422594b306a2300315da

 
#include <stdio.h>
int main() {
    int num = 0;    //计算最后一个单词数
    char arr[1000] = {0};
    scanf("%[^\n]%*c", arr);    //可以获取空格的scanf
    char* p;    
    int a = 0;
    a = sizeof(arr);    //计算输入数组大小
    p = &arr[a] - 1;    //指向数组最后一个元素

    while (1
    {
        p--;
        if (*(p - 1) == ' ' || *p == arr[0])     //当遇到最后一个单词前面的空格,或者只有一个单词时
        {
            while (*p != '\0')     //开干,遇到字符串结束符结束
            {
                num++;
                p++;
            }
            printf("%d\n", num);
            return 0;
        }
    }
    return 0;
}

/*
试错太多,本以为是一道很简单的题,但就是找不到快速解题的诀窍,导致写了很多遍才通过。
解题思路:1、可以先用把数组的大小计算出来,接着指针指向字符串数组的最后一个元素(PS:本想一路循环到字符串结束符的,但循环到最后指向'\0'后就会找不回元素组,相当于指向空)。然后往回循环遍历,p--,直到*p指向空格' ' ,再用一个循环进行最后一个单词的计算字母数,p++,num++,直到*p指向'\0',完成,打印num值。
*/
全部评论

相关推荐

10-30 23:23
已编辑
中山大学 Web前端
去B座二楼砸水泥地:这无论是个人素质还是专业素质都👇拉满了吧
点赞 评论 收藏
分享
点赞 评论 收藏
分享
1 收藏 评论
分享
牛客网
牛客企业服务