字符集合的交集
给定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++来做 展开
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++来做 展开
3个回答
展开全部
思路:维护两个长为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,我慢慢跟你说。
如果没明白或要代码,请连我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,我慢慢跟你说。
展开全部
思路:维护两个长为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
加载更多
解集
……这应该是
没什么问题
的……
如果没明白或要代码,请连我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
加载更多
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询