一.问题描述
给定一行字符串,获取其中最长单词。
比如:给定一行字符串: 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;
}
四.运行结果
创作不易, 如果这份博客👍对你有帮助,可以给博主一个免费的点赞以示鼓励。
欢迎各位帅哥美女点赞👍评论⭐收藏⭐,谢谢!!!
如果有什么疑问或不同的见解,欢迎在评论区留言哦👀。
祝各位生活愉快⭐