UVa——110303 Common Permutation(字符串)

题意:给出两个字符串 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 }

 

posted @ 2012-02-29 09:05  笑巧  阅读(327)  评论(0编辑  收藏  举报