1 条题解
-
0
输入一行字符串进行分析
#include<bits/stdc++.h> using namespace std; string s; int main() { getline(cin,s); s = " "+s; s[s.length()-1]=' '; int p,q;//标记上一个空格和当前空格的位置 int ansP,ansQ;//最长单词的两个空格的位置 p=0; ansP=ansQ=0; for(int i=1;i<s.length();i++){ if(s[i]==' '){ q=i; //当前的单词:s[p+1]~s[q-1] if(q-p>ansQ-ansP) { ansP=p; ansQ=q; } p=i; } } for(int i=ansP+1;i<=ansQ-1;i++) cout<<s[i]; return 0; }
#include<bits/stdc++.h> using namespace std; int main(){ string s; getline(cin,s); s=" "+s; //前面加一个空格 s[s.length()-1]=' ';//最后的点号改成空格 int last=0;//上一个空格的位置 int now;//当前空格的位置 int ansL=0,ansR=0;//最终最长的单词对应的两个空格位置 for(int i=0;i<s.length();i++){ if(s[i]==' '){ now = i; //s[last] 与 s[now] 之间夹了一个单词 int len = now-last-1; if(len>ansR-ansL-1){ ansR=now; ansL=last; } last=now; } } for(int i=ansL+1;i<=ansR-1;i++) cout<<s[i]; return 0; }
使用
cin
忽略空格读单词#include<bits/stdc++.h> using namespace std; string s,ans; int main() { while(1){ cin>>s; if(s[s.length()-1]=='.'){ if(s.length()-1>ans.length()) ans=s; break; }else{ if(s.length()>ans.length()) ans=s; } } for(int i=0;i<ans.length();i++) if(ans[i]!='.') cout<<ans[i]; return 0; }
配合
substr
简化#include<bits/stdc++.h> using namespace std; string s,ans; int main() { while(1){ cin>>s; if(s[s.length()-1]=='.'){ if(s.length()-1>ans.length()) ans=s.substr(0,s.length()-1); break; }else{ if(s.length()>ans.length()) ans=s; } } cout<<ans; return 0; }
- 1
信息
- ID
- 369
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 3
- 标签
- (无)
- 递交数
- 128
- 已通过
- 65
- 上传者