字符集合的交集

给定2个只包含英文字母的字符串(每个字符串本身的字符各不相同),求这两个字符串的交集。(当然,大家都知道集合交集的定义,就是取两个集合中共同的元素,这里还是提醒大家一下)... 给定2个只包含英文字母的字符串(每个字符串本身的字符各不相同),求这两个字符串的交集。(当然,大家都知道集合交集的定义,就是取两个集合中共同的元素,这里还是提醒大家一下)

Input
输入数据的第一行为一个正整数T, 表示测试数据的组数. 然后是T组测试数据. 每组数据分别包含2个字符串。

Output
针对每组测试数据输出一行数据,表示A∩B的结果,如果结果为空集合,则输出“NULL”,否则按ASCII顺序从小到大输出结果,每个元素之间无空格.

Sample Input
5
abcdefg Abkmnd
abcd efgh
abcd abcde
VFGab aG
asdf sdfawert

Sample Output
bd
NULL
abcd
Ga
adfs
用c++来做
展开
 我来答
草刺猬_SP
2010-01-14 · TA获得超过2077个赞
知道小有建树答主
回答量:190
采纳率:0%
帮助的人:312万
展开全部
思路:维护两个长为256的表,初始值为全0,每次两个字符串里出现新的字符,就将相应的字符的“出现”标志置为1,最后扫描,两面都是1的就是解集……这应该是没什么问题的……
如果没明白或要代码,请连我Baidu Hi

喂……编写完整的代码是很麻烦的……
我给个关键模块行吗?

void process(string a, string b)
{
int n1,n2,i;
bool as[256],bs[256],f;
char k;
n1=a.length();n2=b.length();
//as[k]、bs[k]分别代表Ascii码为k的字符是否在A、B集合中
for(k=0;k<256;k++) as[k]=bs[k]=false;//初始时两个都是空集
for(i=0;i<n1;i++) as[a[i]]=true;//把a的字符加入A集合
for(i=0;i<n2;i++) bs[b[i]]=true;//把b的字符加入B集合
f=true;//是否是NULL的情况
for(k=0;k<256;k++) if(as[k]&&bs[k])//同在两个集合中
{
cout<<k;
f=false;
}
if(f) cout<<"NULL";
cout<<endl;//换行
}

能解决问题吗?不然还是找机会连Baidu Hi,我慢慢跟你说。
961392029
2010-01-16 · TA获得超过478个赞
知道答主
回答量:45
采纳率:0%
帮助的人:0
展开全部
dd
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
邸慕石正浩
2019-09-01 · TA获得超过1234个赞
知道小有建树答主
回答量:1701
采纳率:94%
帮助的人:12.1万
展开全部
思路:维护两个长为256的表,初始值为全0,每次两个字符串里出现新的字符,就将相应的字符的“出现”标志置为1,最后扫描,两面都是1的就是
解集
……这应该是
没什么问题
的……
如果没明白或要代码,请连我Baidu
Hi
喂……编写完整的代码是很麻烦的……
我给个关键模块行吗?
void
process(string
a,
string
b)
{
int
n1,n2,i;
bool
as[256],bs[256],f;
char
k;
n1=a.length();n2=b.length();
//as[k]、bs[k]分别代表Ascii码为k的字符是否在A、B集合中
for(k=0;k<256;k++)
as[k]=bs[k]=false;//初始时两个都是
空集
for(i=0;i
评论
0
0
加载更多
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式