自学内容网 自学内容网

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

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

#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");
}
}

原文地址:https://blog.csdn.net/weixin_45778846/article/details/143584664

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!