蓝桥杯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

cpp 复制代码
#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;
}
相关推荐
GG.WinGel2 天前
三元组中心问题
java·数据结构·算法·青少年编程·蓝桥杯
GG.WinGel3 天前
质数数目(蓝桥杯练习题)
java·数据结构·算法·青少年编程·蓝桥杯
Tsuki_tl4 天前
【优选算法 — 双指针】经典例题题解+算法总结
算法·蓝桥杯·力扣·刷题·双指针·1024程序员节·优选算法
十二6 天前
【洛谷题解】P1115 最大子段和(前缀和 + 维护最小前缀)
数据结构·c++·算法·蓝桥杯
青少儿编程课堂8 天前
2026蓝桥杯青少组:校园飞鸟穿越赛解析
蓝桥杯·scratch·少儿编程·图形化编程·蓝桥杯青少组
aqiu11111110 天前
蓝桥杯真题复盘:Fibonacci 数列与黄金分割(C++ 算法详解)
c++·算法·蓝桥杯
aqiu11111111 天前
题目总结:[P8752 [蓝桥杯 2021 省 B2] 特殊年份]
蓝桥杯
青少儿编程课堂11 天前
2026蓝桥杯青少组:校园防疫大作战解析
蓝桥杯·scratch·少儿编程·图形化编程·蓝桥杯青少组
MoRanzhi120313 天前
106.正则问题(分治)
python·算法·正则表达式·蓝桥杯·递归·分治算法·字符串处理
MoRanzhi120313 天前
122.四平方和(暴力枚举)
python·数学·算法·蓝桥杯·完全平方数·暴力枚举·四平方和定理