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 }

 

你可能感兴趣的:(com)