查找最大元素
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 68856 Accepted Submission(s): 36553
Problem Description
对于输入的每个字符串,查找其中的最大字母,在该字母后面插入字符串“(max)”。
Input
输入数据包括多个测试实例,每个实例由一行长度不超过100的字符串组成,字符串仅由大小写字母构成。
Output
对于每个测试实例输出一行字符串,输出的结果是插入字符串“(max)”后的结果,如果存在多个最大的字母,就在每一个最大字母后面都插入"(max)"。
Sample Input
abcdefgfedcbaxxxxx
Sample Output
abcdefg(max)fedcba
x(max)x(max)x(max)x(max)x(max)
#include<iostream> #include<cstring> #include<cstdio> #include<map> #include<set> #include<cstdlib> #include<stdio.h> #include<cmath> #include<string> #include<algorithm> using namespace std; char a[200]; void str_insert(char *str1, const char* str2, int pos){//在str1的pos位置后面插入str2(0开始) int len1 = strlen(str1); int len2 = strlen(str2); for(int i = len1-1; i > pos; --i){ str1[i+len2] = str1[i]; } for(int i = 0; i < len2; ++i){ //str1[pos+i+1] = *str2++; str1[++pos] = *str2++; } str1[len1+len2] = '\0'; } int main() { const char * str2 = "(max)"; while(scanf("%s",a) != EOF){ char ma = 0; int len = strlen(a); for(int i = 0; i < len; ++i){ if(a[i] > ma){ ma = a[i]; } } for(int i = 0; i < len;){ if(a[i] == ma){ str_insert(a,str2,i); i += 5; len += 5;//技巧 } else ++i; } printf("%s\n",a); } return 0; }