字符串合并

问题描述

给定两个仅有英文字母构成的字符串st,把这两个字符串合并后排序。排序规则如下

1)不区分大小写按26个字母的字典顺序排序,即a和A在最前,其次是b和B,...,最后是z和Z

2)小写字母在大写字母的前面

例如HELLO和hello合并并排序后的字符串为

eEhHllLLoO

输入

输入为两行,每行都是有大小写英文字母构成的字符串。每个字符串的长度不超过100。

输出

在单独的一行中输出合并排序后的字符串。

输入样列

HELLO
hello

输出样例

eEhHllLLoO

代码

#include<bits/stdc++.h>
using namespace std;
int A[26];//大写字母统计 出现次数 ,放在主函数外面的数组默认初始化为0 
int a[26];//小写字母统计 出现次数 
int main()
{	int i ,k;	
	string s ,t ;
	cin >> s >> t;
	for( i = 0 ; i < s.size() ; i++)
	{
		if( s[i] >='A'  && s[i] <='Z')//大写字母统计统计
			A[ s[i] - 'A'] ++;//利用ascii性质 
		else 
		if( s[i] >='a'  && s[i] <='z')//小写字母统计
			a[ s[i] - 'a']++;
	}
	for( i = 0 ; i < t.size() ; i++)
	{
		if( t[i] >='A'  && t[i] <='Z')
			A[ t[i] - 'A'] ++;
		else 
		if( t[i] >='a'  && t[i] <='z')
			a[ t[i] - 'a']++;
	}
	for( i = 0 ; i < 26 ; i++)
	{
		if( a[i] >0)
		{
			for( k = 1 ; k <= a[i] ; k++)
				printf("%c" , i+'a');
		}
		if( A[i] >0)
		{
			for( k = 1 ; k <= A[i] ; k++)
				printf("%c" , i+'A');
		}
	}
	puts("");	 	
	return 0;
 	} 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值