Common permutation
Time Limit: 1000MS | Memory Limit: 65536K | |
Total Submissions: 5786 | Accepted: 1750 |
Description
Given two strings of lowercase letters, a and b, print the longest string x of lowercase letters such that there is a permutation of x that is a subsequence of a and there is a permutation of x that is a subsequence of b.
Input
Input consists of pairs of lines. The first line of a pair contains a and the second contains b. Each string is on a separate line and consists of at most 1,000 lowercase letters.
Output
For each subsequent pair of input lines, output a line containing x. If several x satisfy the criteria above, choose the first one in alphabetical order.
Sample Input
pretty women walking down the street
Sample Output
e nw et
Source
The UofA Local 1999.10.16
#include<iostream>
#include<algorithm>
#include<fstream>
#include<map>
#include<set>
#include<string>
#include<stack>
#include<cctype>
#include<cstring>
using namespace std;
ofstream out;
const int N=1000+10;
char a[N];
char b[N];
int main(){
while(gets(a)&&gets(b)){
sort(a,a+strlen(a));
sort(b,b+strlen(b));
for(int i=0,j=0;i<strlen(a)&&j<strlen(b);){
if(a[i]==b[j]){
putchar(a[i]);
i++;
j++;
}else if(a[i]<b[j])i++;
else j++;
}
cout<<endl;
}
return 0;
}