每日一题——第一百二十一题

题目:找到一串字符串中最长的单词,打印单词,并打印其长度和开始的索引下标

c 复制代码
#pragma once

#include<stdio.h>
#include<stdbool.h>
#include<ctype.h>
#include<string.h>

//找到一串字符串中最长的单词,打印单词,并打印其长度和开始的索引下标

void printfLongestWord(char* str) {

	int maxLength = 0;//最长单词的长度
	int currLength = 0;//当前单词的长度
	int startIndex = 0;//最长单词开始索引
	bool isInWord = false;//用于标记是否在单词中


	for (int i = 0; str[i] != '\0'; i++)
	{
		if (!isspace(str[i])) {//如果当前字符不是空格字符
		
		//首先判断他之前是否在单词的内部
			if (!isInWord) //之前不在单词内部
			{
				startIndex = i;//更新单词开始的索引
				isInWord = true;//修改状态
			}

			currLength++;//当前单词长度加1
		
		}
		else//遇到空字符了
		{
			if (isInWord) //判断之前在单词的内部
			{
				if (currLength > maxLength)//判断长度
				{
					maxLength = currLength;//更新最大长度
					startIndex = i - maxLength;//更新最长单词的起始索引
				}

				isInWord = false;//更新当前状态
				currLength = 0;//更新当前单词长度
			}
		}
		
	}

	//最后不要忘了处理字符串末尾的单词
	if (isInWord && currLength > maxLength) 
	{
		maxLength = currLength;
		startIndex = strlen(str) - maxLength;//更新最长单词的起始索引
	}

	//输出最长单词
	if (maxLength > 0)
	{
		printf("最长单词为 :%.*s\t开始索引为:%d\t 单词长度为:%d", maxLength, str + startIndex, startIndex, maxLength);//输出从给定字符串startIndex开始的长度为maxLength的子字符串
	}
	else
	{
		printf("没有输入单词\n");
	}
}
相关推荐
炸膛坦客17 小时前
单片机/C/C++八股:(二十六)IIC 专题(I²C)---- 上集
c语言·c++·单片机
程序员Rock1 天前
上位机开发-MODBUS面试常见问题
c语言·c++·面试·职场和发展·上位机
blevoice1 天前
抖抖燃脂机单 AC6966B 主控调试踩坑:Type-C 整机供电喇叭无声排障
c语言·开发语言·单片机
小小晓.1 天前
C++小白记:C风格字符串和数组用法
c语言·开发语言·c++
深念Y1 天前
开发者如何清理和迁移C盘堆积的垃圾
c语言·开发语言
十月的皮皮1 天前
STM32从零到量产开发:四路继电器工业控制模块开发实战笔记(小白视角)
c语言·笔记·stm32·stm32cubemx·hal库
不正经学生1 天前
C 语言函数深入剖析(基础篇)—— 从零理解函数的每一个细节
c语言·开发语言·数据结构·算法·c#
天空'之城1 天前
C 语言工业级通用组件手写 10:字节序转换
c语言·字节序·大小端·嵌入式通信·工业级组件
C++ 老炮儿的技术栈2 天前
OpenCV 实现社保卡透视矫正:Hough 直线提取四角并转正证件图像
c语言·c++·人工智能·opencv·算法·计算机视觉·c
我叫洋洋2 天前
C ++ [ hello world ]
c语言·c++·算法