查找最大元素
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;
}