HUNAN UNIVERSITY ACM/ICPC Judge Online_Problem 10048_Common permutation

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;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值