Common permutation |
Time Limit: 1000ms, Special Time Limit:2500ms, Memory Limit:32768KB |
Total submit users: 418, Accepted users: 386 |
Problem 10048 : No special judgement |
Problem 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 |
Problem Source |
UAL 1999 |
CODE
/*
Name: 10048_Common permutation
Copyright: yangchun's
Author: yangchun
Date: 22-06-08 19:38
Description: HUNAN UNIVERSITY ACM/ICPC Judge Online_Problem 10048_Common permutation
*/
#include <algorithm>
#include <stdio.h>
#include <time.h>
using namespace std;
int main()
{
//freopen("in.txt","r",stdin);
//freopen("out.txt","w",stdout);
int i, j, len_a, len_b, ch_num[26] = {0};
char a[1001] = {'/0'}, b[1001] = {'/0'},
ch[27] = "abcdefghijklmnopqrstuvwxyz";
while(gets(a)!=NULL)
{
gets(b);
len_a = strlen(a);
len_b = strlen(b);
for(i=0; i<len_a; i++)
for(j=0; j<len_b; j++)
{
if(a[i] == b[j])
{
b[j] -= b[j]-32;
ch_num[a[i]-'a']++;
break;
}
}
for(i=0; i<26; i++)
{
if(ch_num[i] > 0)
{
for(j=0; j<ch_num[i]; j++)
printf("%c",ch[i]);
}
}
printf("/n");
memset(a,'/0',sizeof(a));
memset(b,'/0',sizeof(b));
memset(ch_num,0,sizeof(ch_num));
}
// printf("time = %ld ms/n",clock());
return 0;
}