题目描述
合并两个字符串,把第二个字符串放到第一个字符串中最大ASSIC码的字符的后面
算法1
(直接模拟) $O(n)$
先找到第一个字符串中最大ASSIC码字符的位置,标记位置,然后输出第一个字符串前面的字符,输出第二个字符
接着输出后面的剩下的字符
注意题目有多组输入,只需要第一个最大的字符
时间复杂度分析:
C++ 代码
#include <bits/stdc++.h>
using namespace std;
int main()
{
char str[11], substr[4];
int n = 2;
while(scanf("%s %s", str, substr) != EOF){
int cnt = str[0], res = 0;
for(int i = 0; i < strlen(str); i++){
if(str[i] > cnt) cnt = str[i], res = i;
else if(str[i] == cnt) continue;
}
for(int i = 0; i <= res; i ++){
cout<< str[i];
}
for(int i = 0; i < strlen(substr); i++){
cout<< substr[i];
}
for(int i = res + 1; i < strlen(str); i++){
cout<< str[i];
}
puts("");
}
return 0;
}
看来还是我想复杂了,一样的想法,不过我写里面了
用substr也可以