蓝桥杯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;
}
相关推荐
嗨信奥10 小时前
蓝桥杯青少 图形化编程(Scratch)编程题每日一练——图形特效
青少年编程·蓝桥杯
uiop_uiop_uiop11 小时前
Xcode16.3配置越狱开发环境
职场和发展·蓝桥杯
嗨信奥13 小时前
蓝桥杯青少年—图形化编程每日练习——绘制云朵
青少年编程·蓝桥杯
吸纹鸽1 天前
蓝桥杯FPGA赛道第二次模拟题代码
fpga开发·蓝桥杯
wuqingshun3141591 天前
蓝桥杯 20. 倍数问题
算法·职场和发展·蓝桥杯·深度优先
吃个早饭1 天前
第十六届蓝桥杯大赛软件赛C/C++大学B组部分题解
c语言·c++·蓝桥杯
蓝天扶光1 天前
蓝桥杯第十六届c组c++题目及个人理解
c++·蓝桥杯
heart000_12 天前
2025蓝桥杯十六届C++ B组题解与代码分析
c++·算法·蓝桥杯
星光始终闪耀3 天前
第十五届蓝桥杯单片机国赛-串口解析
单片机·职场和发展·蓝桥杯