您的位置:首页 > 其它

UVa——110303 Common Permutation(字符串)

2012-02-29 09:05 387 查看
题意:给出两个字符串 a 和 b ,输出一个满足如下条件的最长串 x:x 的某两个排列分别是 a 和 b 的(不必连续的)子序列。如果有多个 x 满足条件,输出字典序最小的一个。

解题思路:首先对两个字符串按字典序排序,然后再进行比较。注意:测试数据含有空格,所以不能用 cin 或 scanf 输入字符串。

View Code

1 #include<iostream>
2 #include<cstdio>
3 #include<algorithm>
4 #include<cstring>
5 using namespace std;
6 char a[1005],b[1005];
7 bool cmp(char x,char y)
8 {
9 return x<y;
10 }
11
12 int main()
13 {
14 int i,j,len1,len2;
15 while(gets(a))
16 {
17 gets(b);
18 len1=strlen(a);
19 len2=strlen(b);
20 sort(a,a+len1,cmp);
21 sort(b,b+len2,cmp);
22 i=0;j=0;
23 while(i<len1&&j<len2)
24 {
25 if(a[i]==b[j])
26 {
27 cout<<a[i];
28 i++; j++;
29 }
30 else
31 {
32 if(a[i]<b[j]) i++;
33 else j++;
34 }
35 }
36 cout<<endl;
37 }
38 return 0;
39 }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: