蓝桥杯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;
}
相关推荐
汉克老师15 小时前
第十四届蓝桥杯青少组C++国赛[2023.5.28]第二部分编程题(4、 数独填数)
c++·蓝桥杯·蓝桥杯c++·c++蓝桥杯
闻缺陷则喜何志丹15 小时前
【 线段树】P12347 [蓝桥杯 2025 省 A 第二场] 栈与乘积|普及+
数据结构·c++·蓝桥杯·线段树·洛谷
古译汉书2 天前
蓝桥杯算法之基础知识(6)
数据结构·算法·蓝桥杯
古译汉书3 天前
蓝桥杯算法之基础知识(4)
开发语言·python·算法·蓝桥杯
古译汉书3 天前
蓝桥杯算法之基础知识(5)
数据结构·算法·蓝桥杯
范纹杉想快点毕业3 天前
数据结构与算法个人学习代码笔记包含leetcode,海贼oj,蓝桥杯,ACM
java·开发语言·笔记·学习·算法·leetcode·蓝桥杯
sssvangen3 天前
拔河(蓝桥杯)(前缀和)
算法·前缀和·职场和发展·蓝桥杯
楼田莉子5 天前
C++算法学习专题:前缀和
c++·学习·算法·leetcode·蓝桥杯
闻缺陷则喜何志丹7 天前
【分治法 BFS 质因数分解】P12255 [蓝桥杯 2024 国 Java B] 园丁|普及+
c++·算法·蓝桥杯·宽度优先·质因数分解·分治法
sssvangen7 天前
宝石组合(蓝桥杯)
算法·蓝桥杯·调和计数法