一.问题描述
给定一行字符串,获取其中最长单词。
比如:给定一行字符串: hello wo shi xiao xiao su
输出:hello
二.题目分析
“打擂台算法”,具体内容小伙伴们可以参考前面的内容。
三.代码实现
char* MaxWord(const char* str)
{
int len = strlen(str);
char* curstr = (char*)malloc((len + 1) * sizeof(char));
char* maxstr = (char*)malloc((len + 1) * sizeof(char));
assert(curstr != NULL && maxstr != NULL);
if (curstr == NULL || maxstr == NULL)
return NULL;
int cur = 0;//当前字符串的长度
int max = 0;//最长字符串的长度
for (int i = 0; str[i] != '\0'; i++)
{
if (isalpha(str[i]))//是字母,是单词的一部分
{
curstr[cur++] = str[i];
}
else //当前是非字母,前面的单词提取结束
{
if (cur > max)//需要更新数据
{
curstr[cur] = '\0';//把curstr变成字符串
max = cur;
strcpy(maxstr, curstr);
}
cur = 0; //为下次提取单词做准备
}
}
if (cur > max)
{
curstr[cur] = '\0';//把curstr变成字符串
max = cur;
strcpy(maxstr, curstr);
}
free(curstr);
return maxstr;
}
int main()
{
char* p = MaxWord("add adfert afda rtert ddffxadf");
printf("%s\n", p);
free(p);
return 0;
}
四.运行结果
创作不易, 如果这份博客👍对你有帮助,可以给博主一个免费的点赞以示鼓励。
欢迎各位帅哥美女点赞👍评论⭐收藏⭐,谢谢!!!
如果有什么疑问或不同的见解,欢迎在评论区留言哦👀。
祝各位生活愉快⭐