题目描述
尝试多种方法来写
样例
为啥这个把“.”去掉了也还是不行呢?
#include<iostream>
using namespace std;
int main()
{
int cnt=0;
string s,r;
while(cin>>s)
{
s.pop_back();
if(s.size()>cnt){ cnt=s.size();r=s; }
}
cout<<r<<endl;
return 0;
}
算法1
(暴力枚举) $O(n^2)$
你这个想法很好,很简单,你能想出来很棒!!
但是你这个是无法删除“.”的,因此你输出的单词如果是最后一个词就会包含“.”
时间复杂度
参考文献
C++ 代码
#include<iostream>
using namespace std;
int main()
{
int cnt=0;
string s,r;
while(cin>>s&&s!=".")
{
if(s.size()>=cnt) r=s;
}
cout<<r<<endl;
return 0;
}
算法2
(暴力枚举) $O(n^2)$
字符串流法:stringstream
C++ 代码
#include<iostream>
#include<sstream>
using namespace std;
int main()
{
string s;
getline(cin,s);
s.pop_back();//新学到的!用来去掉最后的“.”
stringstream ssin(s);//字符串流,这样以后ssin和cin的作用是一样的,只是ssin是在s中摘取
string str;//同样得定义一个字符串,它从s中提取
int cnt=0;
string r;
while(ssin>>str)
{
if(str.size()>cnt)
{
cnt=str.size(), r=str;//别忘了让cnt=新的值
}
}
cout<<r<<endl;
return 0;
}