View Code of Problem 2591

#include <stdio.h>
#include <string.h>

char ch1[1000];
char ch2[1000];
int l1, l2;
int a1[30];
int a2[30];
int a[30];
int main() {
    int find;
    int t;
    scanf("%d", &t);
    getchar();
    while(t--) {
        scanf("%s%s",ch1,ch2);
        l1 = strlen(ch1);
        l2 = strlen(ch2);
        memset(a1, 0, sizeof(a1));
        memset(a2, 0, sizeof(a2));
        memset(a, 0, sizeof(a));
        for(int i = 0; i < l1; i++) {
            a1[ch1[i] - 'A'] ++;
        }
        for(int i = 0; i < l2; i++) {
            a2[ch2[i] - 'A'] ++;
        }
        find = 0;
        for(int i = 0; i < 26; i++) {
            if(a1[i] != 0 && a2[i] != 0) {
                a[i] = a1[i] > a2[i]?a2[i]:a1[i];
                find = 1;
            }
        }
        if(find == 0) printf("-1\n");
        else {
            for(int i = 0; i < 26; i++) {
                if(a[i] != 0) {
                    for(int j = 0; j < a[i]; j++)
                        printf("%c", i + 'A');
                }
            }
            printf("\n");
        }
    }
    return 0;
}

Double click to view unformatted code.


Back to problem 2591