前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >最小字符串 蓝桥杯 C++

最小字符串 蓝桥杯 C++

作者头像
叶茂林
发布2023-07-30 10:31:50
2170
发布2023-07-30 10:31:50
举报
文章被收录于专栏:叶子的开发者社区

时间限制1s

内存限制128MB

难度3

题目描述

给定一些字符串(只包含小写字母),要求将他们串起来构成一个字典序最小的字符串。

输入

  第一行T,表示有T组数据。   接下来T组数据   每组第一行一个正整数n,表示字符串个数。   接下来n行,每行一个字符串(长度不超过100)。

输出

T行,每行一个字符串。

输入样例1

1 3 a b c

输出样例1

abc

输入样例2

11 4 ba b baba babb 4 b ba ba bb 4 b bb b ba 3 a ab ac 8 a ab abc b bc ba cba ac 3 a a acd 3 a b aac 3 a bc bd 3 a c aab 3 a c ab 3 b ba d

输出样例2

bababababbb bababbb babbbb aabac aababcacbabbccba aaacd aaacb abcbd aaabc aabc babd

思路分析

将一些字符串串起来构成一个字典序最小的字符串,其实就是怎么排序这些字符串的问题。

如果直接根据单个字符串的大小来排序的话,我们首先来看看,字符串大小是怎么比较的?

首先会从第一个字符开始比较,根据字符的ASCII码的大小来比较,直到遇到字符的结束符为止,那么长的字符串就有可能比短的字符串要小的。

举个例子吧,像z和za这两个字符串,如果是安装单个字符串来排,那么最小是zza,而显然最小应该是zaz。

所以我们要根据组合最小来排序。

AC代码

代码语言:javascript
复制
#include<iostream>
#include<algorithm>
using namespace std;
bool rule(string a, string b)
{
	return (a + b) < (b + a);
}
int main() 
{
	int n, i, t;
	cin >> t;
	while (t--) 
	{
		cin >> n;
		string *p = new string[n];
		for (i = 0; i < n; i++)
			cin >> p[i];
		sort(p, p + n, rule);
		for (i = 0; i < n; i++)
			cout << p[i];
		cout << endl;
		delete[] p;
	}
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-07-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目描述
  • 思路分析
  • AC代码
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档