查找最大元素
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 22383 Accepted Submission(s): 12296
Problem Description
对于输入的每个字符串,查找其中的最大字母,在该字母后面插入字符串“(max)”。
Input
输入数据包括多个测试实例,每个实例由一行长度不超过100的字符串组成,字符串仅由大小写字母构成。
Output
对于每个测试实例输出一行字符串,输出的结果是插入字符串“(max)”后的结果,如果存在多个最大的字母,就在每一个最大字母后面都插入"(max)"。
Sample Input
abcdefgfedcba xxxxx
Sample Output
abcdefg(max)fedcba x(max)x(max)x(max)x(max)x(max)
自己似乎一直都有点害怕做有关字符串的题目,可能是因为对于数字类的题接触比较多吧,字符串题练得少,这也是一道水题,AC了,之后又看到几个ac的代码,感觉还是就算是水题,也可以做出各种花样:
#include<iostream> using namespace std; int main(){ char a[101]; int i; while(cin>>a) //这里用gets(a) { char max = a[0]; for( i=1;a[i]!='\0';i++){ if(a[i]>max) max=a[i]; } for( i=0;a[i]!='\0';i++){ if(a[i]==max) cout<<a[i]<<"(max)"; else cout<<a[i]; } cout<<endl; } return 0; }
或者这样:
#include<iostream> #include<string> using namespace std; int main(){ string a;; int i; while(cin>>a) { char max = a[0]; for( i=1;i<a.size();i++){ //a.size() strlen(a) if(a[i]>max) max=a[i]; } for( i=0;a[i]!='\0';i++){ if(a[i]==max) cout<<a[i]<<"(max)"; else cout<<a[i]; } cout<<endl; } return 0; }
在讨论区还有这样的乱世奇葩:
#include<iostream> #include<vector> #include<string> using namespace std; int main() { string s; int i,j; char max; while(cin>>s) { vector<char>v; max='A'; for(i=0;i<s.length();i++) { if(max<s[i]) max=s[i]; v.push_back(s[i]); } i=0; for(;i<v.size();i++) { if(v[i]==max) { v.insert(v.begin()+i+1,'('); v.insert(v.begin()+i+2,'m'); v.insert(v.begin()+i+3,'a'); v.insert(v.begin()+i+4,'x'); v.insert(v.begin()+i+5,')'); i=i+5; } } for(i=0;i<v.size();i++) cout<<v[i]; cout<<endl; } return 0; }