当前位置: 首页 > news >正文

C语言--统计字符串中最长的单词

输入:一串单词,以空格作为单词的间隔。
输出:最长的单词

代码

思路: 如果不是分隔符且inWord=0,说明首次进入一个新单词,记录单词开始的下标
如果是分隔符且且inWord=1,说明退出单词,计算单词长度并与之前的最长单词对比,记录最新的最长的单词。
注意:最后一个单词如果一直到末尾,需要出循环后单独对比。

#include <stdio.h>
#include <string.h>
#include <ctype.h>
void longestWord(char *str) {
    int wordStartIndex = 0; //记录每个单词开始
    int wordLength = 0;  //记录每个单词长度
    int maxLen = 0;
    int maxStartIndex = 0;
    int inWord = 0;
    int i;
    for (i = 0; str[i] != '\0'; i++) {
        if (isspace(str[i])) {
            if (inWord) {
                // 退出一个单词
                wordLength = i - wordStartIndex; //目前这个单词长度
                inWord = 0;
                if (maxLen < wordLength) {
                    // 存在单词比之前的单词长
                    maxLen = wordLength;
                    maxStartIndex = wordStartIndex;
                }
            }
        } else {
            if (!inWord) {
                wordStartIndex = i; //进入一个新单词,记录这个单词起始位置
            }
            inWord = 1;
        }
    }
    if (inWord) {
        // 最后一个单词后面没空格
        wordLength = i - wordStartIndex;
        if (maxLen < wordLength) {
            maxStartIndex = wordStartIndex;
        }
    }
    for (int j = maxStartIndex; ; j++) {
        if (isspace(str[j]) || str[j] == '\0') {
            break;
        }
        printf("%c", str[j]);
    }
    printf("\n");
}

运行

int main() {
    char str[]="aaaaaa bb  ccc";
    char str2[]="a bc ddddddddd";
    char str3[]="i am cccccc   ";
    longestWord(str);
    return 0;
}

在这里插入图片描述

相关文章:

  • [leetcode]queue的操作的回顾
  • 【CMOS输出缓冲器驱动强度】
  • 系统架构设计理论之架构风格与模式(分层、MVC、微服务、事件驱动)
  • Android URL中+转义之后导致服务器请求无法获得正确的参数值
  • LeetCode算法题(Go语言实现)_28
  • 【电平转换原理】
  • WinDbg. From A to Z! 笔记(下)
  • 大坑!GaussDB数据库批量插入数据变只读
  • ctfshow _萌新 萌新_密码篇
  • 常见集合篇(五)深入解析 HashMap:从原理到源码,全方位解读
  • 青铜与信隼的史诗——TCP与UDP的千年博弈
  • 【JavaScript】闭包小练习(数字范围起始值和结束值)
  • RHCSA Linux 系统创建文件
  • Vim操作指令全解析
  • 质检LIMS实验室系统在环保技术企业的应用 环保技术研发场景的特殊性需求
  • C++高效读取大规模文本格式点云(windows)
  • 手机归属地查询Api接口,数据准确可靠
  • 根据时间范围得出雪花算法(snowflake)ID的工具类-基于时间反推ID范围
  • AiCube 试用 - 创建流水灯工程
  • 有瓶颈设备的多级生产计划问题:基于Matlab的深度解析与实践