本帖最后由 Mike_zh 于 2014-12-31 20:38 编辑
这是我做的 C语言版的 基本上没用什么库函数,字符串的什么的- #include <stdio.h>
- #include <stdlib.h>
- char *maxStr(char *str)
- {
- char *p = str; // 因为后面还要用到str 所以先用p操作str
- int maxLen = 0; // 记录最大长度
- int curLen = 0; // 记录当前正在遍历的单词的长度
- int index = 0; // 记录正在遍历的字符在整个串中的位置
- int beginIndex = 0; // 记录单词的开始位置
- while (*p)
- {// 如果不是空格 当前单词的长度+1
- if (*p != ' ')
- {
- curLen++;
- }
- else
- {
- if (curLen > maxLen) // 如果是空格且当前单词的长度大于最大长度
- {
- maxLen = curLen;
- beginIndex = index - curLen; // 记录下这个最长单词的开始位置
- }
- curLen = 0; // 计数回零
- }
- p++;
- index++;
- }
- // 遍历最后一个单词
- if (curLen > maxLen)
- {
- maxLen = curLen;
- beginIndex = index - curLen;
- }
- // 动态创建字符串q使之与最长字符串相等
- char *q = (char *)calloc(maxLen+1, sizeof(char));
- for (int i = 0; i < maxLen; i++)
- {
- q[i] = str[beginIndex+i];
- }
- q[maxLen] = '\0';
- return q;
- }
- int main()
- {
- printf("最长的单词是%s\n", maxStr("abc abcd abcdfg abdf"));
- return 0;
- }
复制代码
|