有两个不包含空白字符的字符串 str 和 substr ,str 的字符个数不超过 1010,substr 的字符个数为 33。(字符个数不包括字符串结尾处的 \0
。)
将 substr 插入到 str 中 ASCII 码最大的那个字符后面,若有多个最大则只考虑第一个。
输入格式
输入包括若干行,每一行为一组测试数据,格式为
str substr
输出格式
对于每一组测试数据,输出插入之后的字符串。
输入样例:
abcab eee
12343 555
输出样例:
abceeeab
12345553
#include<bits/stdc++.h> using namespace std; int main(){ string str,substr; while(cin>>str>>substr){ char a=str[0] ; //1.遍历找到ascll码最大字符 为a for(int i=0;i<str.length();i++){ a=max(str[i],a); } //2.再次遍历找a对应的str[i] 进行下一步操作 string new2;//新字符串 int j=0;int count=1; //遍历str for(int i=0;i<str.length();i++){ //正常赋值,方便后边输出 new2[j]=str[i]; //当找到a的时候(因为需要保证一个while执行一次 插入 所以代入count来 限制执行次数) //下方操作 重点理清j下标含义即 可理解 if((new2[j]==a)&&count==1) { for(int m=0;m<substr.length();m++){ new2[j+1]=substr[m];j++; } count--; } j++;//正常加1 方便赋值 与上方赋值操作相匹配 } //3.遍历输出 for(int t=0;t<j;t++){cout<<new2[t];} cout<<endl; } return 0; }
#include<bits/stdc++.h>
using namespace std;
int main(){
string str,substr;
while(cin>>str>>substr){
char a=str[0] ;
//1.遍历找到ascll码最大字符 为a
for(int i=0;i<str.length();i++){
a=max(str[i],a);
}
//2.再次遍历找a对应的str[i] 进行下一步操作
string new2;//新字符串
int j=0;int count=1;
//遍历str
for(int i=0;i<str.length();i++){
//正常赋值,方便后边输出
new2[j]=str[i];
//当找到a的时候(因为需要保证一个while执行一次 插入 所以代入count来 限制执行次数)
//下方操作 重点理清j下标含义即 可理解
if((new2[j]==a)&&count==1) {
for(int m=0;m<substr.length();m++){
new2[j+1]=substr[m];j++;
}count--;
}
j++;//正常加1 方便赋值 与上方赋值操作相匹配
}
//3.遍历输出
for(int t=0;t<j;t++){cout<<new2[t];}
cout<<endl;
}
return 0;
}