蓝桥杯15届国赛 最小字符串
问题描述
给定一个长度为 N 且只包含小写字母的字符串 S,和 M 个小写字母 c1,c2,...,cM。现在你要把 M 个小写字母全部插入到字符串 S 中,每个小写字母都可以插入到任意位置。请问能得到的字典序最小的字符串是什么?
输入格式
第一行包含两个整数 N 和 M。第二行包含一个长度为 N 的字符串 S。第三行包含 M 个小写字母 c1,c2,...,cM。
输出格式
输出一个长度为 N+M 的字符串代表答案。
样例输入 1
4 3
abbc
cba
样例输出 1
aabbbcc
样例输入 2
7 3
lanqiao
bei
样例输出 2
beilanqiao
评测用例规模与约定
对于 20% 的评测用例,M=1。
对于 100%的评测用例,1≤N,M≤。
比较简单,双指针+sort
#include<iostream>
#include<algorithm>
using namespace std;const int N = 1e5+10;
int n, m;
char c1[N], c2[N];int main()
{cin>>n>>m;cin>>c1>>c2;sort(c2, c2+m);//比较 c1[i] 和 c2[j],输出较小的字符,并移动相应的指针int i=0, j=0;while(i<n && j<m){if(c1[i] <= c2[j]){cout<<c1[i];i++; }else{cout<<c2[j];j++;}}//如果 c1 或 c2 有剩余未处理的字符,直接按顺序输出while(i<n){cout<<c1[i];i++;}while(j<m){cout<<c2[j];j++; } return 0;
}