蓝桥杯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;
}
相关推荐
智者知已应修善业20 小时前
【51单片机只有一个8*8点阵数据如何滚动起来一片595+一组IO+花样】2022-1-15
c++·经验分享·笔记·单片机·蓝桥杯·硬件架构
Dream it possible!3 天前
蓝桥杯_翻转_C++
c++·算法·蓝桥杯
鑫 源8 天前
VS2019 for mac里用c#开发Mac OS应用 避坑 和 源码
职场和发展·蓝桥杯
aqiu1111119 天前
【蓝桥杯】0仙境诅咒 — BFS/DFS 图论连通性问题(C++ 题解)
蓝桥杯·深度优先·宽度优先
捷瑞电子工坊18 天前
嵌入式蓝桥杯从零点亮第一个LED
stm32·蓝桥杯·cubemx·嵌入式·led·ll·锁存
aqiu1111111 个月前
【数位 DP / 记忆化搜索】蓝桥云课 - 光轨区的 AI 数 题解
c++·算法·蓝桥杯·数位dp
aqiu1111111 个月前
【并查集 / 图论】蓝桥云课 - 魔法大陆的城市群(求无向图连通块数量)题解
蓝桥杯·图论
aqiu1111111 个月前
【LeetCode 902】最大为 N 的数字组合 - 详细题解与数位组合思路
数据结构·算法·leetcode·蓝桥杯·数位dp
Chester_19991 个月前
CSP202312C.树上搜索
开发语言·数据结构·c++·蓝桥杯·stl
CoderYanger1 个月前
A.每日一题:3622. 判断整除性
java·程序人生·算法·leetcode·面试·职场和发展·蓝桥杯