Problemi 125

Kërkesa

Na jepen dy vargje shkronjash A dhe B. A është e mundur të gjejmë një nënvarg s1A dhe një nënvarg s2B, që mos të jenë bosh, dhe që s1+s2 të jetë palindromë?

Shenja + tregon bashkimin ose ngjitjen e dy vargjeve, kurse palindromë do të thotë që po ta lexosh vargun nga fundi në fillim është njësoj me vargun fillestar (nga fillimi në fund).

Referenca: https://www.codechef.com/problems/STRPALIN

Shembull

$ cat input.txt
3
abc
abc
a
b
abba
baab

$ python3 prog.py < input.txt
Yes
No
Yes

Në rastin e parë, një nga zgjedhjet e mundshme është s1 = "ab" dhe s2 = "a". Atere kemi s1+s2 = "aba" e cila është palindromë, kështu që përgjigja është “Yes”.

Në rastin e dytë kemi A = "a" dhe B = "b" dhe nuk ka asnjë mundësi që të krijojmë ndonjë palindromë, kështu që përgjigja është “No”.

Zgjidhja

for _ in range(int(input())):
    if len(set(input()).intersection(set(input()))) == 0:
        print('No')
    else:
        print('Yes')

Sqarime

Meqenëse nënvargjet s1 dhe s2 nuk mund të jenë bosh dhe shkronja e parë e s1+s2 duhet të jetë e njëjtë me shkronjën e fundit (nga përkufizimi i palindromës), i bie që vargjet A dhe B duhet të kenë të paktën një shkronjë të përbashkët, përndryshe nuk mund të formojmë një palindromë. Nga ana tjetër, nqs A dhe B kanë një shkronjë të përbashkët, p.sh. x, atere ne mund të zgjedhim s1 = "x" dhe s2 = "x" dhe s1+s2 = "xx" do jetë një palindromë.

Kështu që kusht i nevojshëm dhe i mjaftueshëm që problemi të ketë zgjidhje është që A dhe B të kenë të paktën një shkronjë të përbashkët. Edhe programi i zgjidhjes pikërisht për këtë kontrollon: i kthen vargjet A dhe B në bashkësi shkronjash, gjen prerjen e tyre, dhe shikon nëse prerja është bosh ose jo.