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

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

输出:最长的单词

代码

思路: 如果不是分隔符且inWord=0,说明首次进入一个新单词,记录单词开始的下标

如果是分隔符且且inWord=1,说明退出单词,计算单词长度并与之前的最长单词对比,记录最新的最长的单词。

注意:最后一个单词如果一直到末尾,需要出循环后单独对比。

c 复制代码
#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");
}

运行

c 复制代码
int main() {
    char str[]="aaaaaa bb  ccc";
    char str2[]="a bc ddddddddd";
    char str3[]="i am cccccc   ";
    longestWord(str);
    return 0;
}
相关推荐
ALzc1 小时前
深度剖析EtherCAT FOE功能:ARM固件升级的数据传输与状态机实现
c语言·stm32·ethercat·foe
宵时待雨2 小时前
数据结构(初阶)笔记归纳3:顺序表的应用
c语言·开发语言·数据结构·笔记·算法
智者知已应修善业2 小时前
【C语言 dfs算法 十四届蓝桥杯 D飞机降落问题】2024-4-12
c语言·c++·经验分享·笔记·算法·蓝桥杯·深度优先
无限进步_3 小时前
【C语言&数据结构】二叉树遍历:从前序构建到中序输出
c语言·开发语言·数据结构·c++·算法·github·visual studio
JAY_LIN——85 小时前
C-语言联合体和枚举
c语言
落笔映浮华丶5 小时前
c程序的翻译过程 linux版
linux·c语言
水饺编程5 小时前
第4章,[标签 Win32] :获取设备环境句柄的第一个方法
c语言·c++·windows·visual studio
Once_day5 小时前
CC++八股文之内存
c语言·c++
2301_765715146 小时前
C语言轮子制造
c语言·开发语言·制造
量子炒饭大师6 小时前
【C++入门】Cyber骇客的同名异梦——【C++重载函数】(与C的函数差异)
c语言·开发语言·c++·函数重载