字符串插入

查找最大元素

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;
	}

 
 

猜你喜欢

转载自blog.csdn.net/tianweidadada/article/details/80502975