*基础习题_字符串练习3

作者在 2011-03-28 15:07:47 发布以下内容

 

Description

找出一个英文字符串中第一个最长的英文单词,字符串中的各英文单词以一个或多个空格分隔或标点符号分隔。如“I am a student.”最长英文单词为”student”。

Input

输入一串字符串。(字符个数不超过500,含标点符号和英文字母,最长英文单词的字符数不超过20)

Output

最长单词,占一行;

Sample Input

I am lucky.student went to school.

Sample Output

student

Source

#include <iostream>
#include<stdio.h>
#include<string.h>
using namespace std;
int max(int a,int b)
  {
    return a>b?a:b;
  }
int main()
{
    char a[20][50],*p=0;
    int  m,i,j;
    for(i=0;i<20;i++)
        {
            for(j=0;j<50;j++)
             {
                a[i][j]=getchar();
                if(a[i][j]==' '||a[i][j]=='\n')
                 { a[i][j+1]='\0';break;}
            }
           if(a[i][j]=='\n') break;
        }
    for(m=0,j=0;j<=i;j++)
         m=max(strlen(a[j]),m);
    for(i=0;j<=j;i++)
        if(m==strlen(a[i]))
         {cout<<a[i]; break;}
    return 0;
}

首先我说说,这个题目算法有点问题,但结果正确,有没有更好的算法
默认分类 | 阅读 920 次
文章评论,共1条
ynwpyv
2011-04-03 14:43
1
我觉得建数组后用相邻‘ ’||‘\n’之间字母的个数大小来判断哪个单词更长会简单点吧,我自己编这个的话很慢的,你可以试下。。新手
游客请输入验证码