编程题#5:字符串插入
注意: 总时间限制: 1000ms 内存限制: 65536kB、
描述
有两个字符串str和substr,str的字符个数不超过10,substr的字符个数为3。(字符个数不包括字符串结尾处的'\0'。)将substr插入到str中ASCII码最大的那个字符后面,若有多个最大则只考虑第一个。
输入
输入包括若干行,每一行为一组测试数据,格式为
str substr
输出
对于每一组测试数据,输出插入之后的字符串。
样例输入
1: abcab eee
2: 12343 555
样例输出
1:abceeeab
2:12345553
提示
这题有多组输入,请参照第二题的提示依次读入和处理每一组数据。
如果使用了字符串函数,比如strlen,请包含cstring头文件 #include <cstring>。
有两种方法,可以跑出来。
使用string下标
#include<iostream>
using namespace std;
int main(){
string s1,s2;
while(cin >> s1 >>s2){
int index = 0;
int len = s1.size();
for(auto i = 0;i != len ;++i){
if(s1[i] > s1[index])
index = i;
}
for(int i = 0;i != index + 1;++i)
cout << s1[i];
cout << s2;
for(int i = index + 1;i != len; ++i)
cout << s1[i];
cout <<endl;
}
return 0;
}
最近在学迭代器,所以也使用了迭代器:代码如下
#include<iostream>
#include<string>
using namespace std;
int main (){
string s1(10,' '),s2(3 ,' ');
while(cin >> s1 >> s2){
int intex;
for(auto i = s1.begin(),temp = s1.begin(); i != s1.end() && !isspace(*i);++i){
if(*i > *temp){
intex = i - s1.begin();
temp = i;
}
}
for(auto i = s1.begin();i != intex + s1.begin()+1;++i)
cout << *i;
cout << s2;
for(auto i = intex + s1.begin()+1; i != s1.end();++i)
cout << *i;
cout<< endl;
}
return 0;
}