Problemi 156
Kërkesa
Një varg quhet DPS (dummy palindromic string) nëse mund të shndërrohet në palindromë duke kryer këto dy veprime (vetëm një herë):
- Ndryshoju vendet shkronjave në mënyrë të çfarëdoshme.
- Zgjidh një nga shkronjat e vargut dhe ndryshoje në një tjetër (që mund të jetë edhe e ndryshme nga shkronjat që janë në vargun fillestar.
Për një varg të dhënë S gjeni nëse është DPS.
Referenca: https://www.codechef.com/problems/DPS
Shembull
$ cat input.txt
4
code
xyxyxy
sad
baab
$ python3 prog.py < input.txt
!DPS
DPS
DPS
!DPS
Shembulli 1: Është e pamundur që të krijojmë një palindromë duke ndryshuar vendet e shkronjave në vargun ‘code’, dhe duke ndryshuar njërën prej tyre.
Shembulli 2: Mund ti ndryshojmë vendet e shkronjave kështu: ‘xyxyyx’, dhe pastaj ta zëvendësojmë shkronjën e tretë me ‘y’. Marrim vargun ‘xyyyyx’, i cili është palindromë.
Shembulli 3: Mund ta lëmë radhën e shkronjave ashtu siç është, dhe pastaj ta zëvendësojmë shkronjën e parë me ‘d’. Marrim ‘dad’, e cila është një palindromë.
Shembulli 4: Edhe pse vargu i dhënë është palindromë, është e pamundur që të krijojmë një palindromë tjetër duke ndryshuar radhën e shkronjave dhe duke ndryshuar njërën prej shkronjave.
Zgjidhja
for _ in range(int(input())):
S = input()
F = {}
for c in S:
F[c] = F.get(c, 0) + 1
nr_odd = 0
for c in F.keys():
if F[c] % 2 == 1:
nr_odd += 1
print('DPS') if nr_odd in [1, 2, 3] else print('!DPS')
Sqarime
Përdorim faktin që në një palindromë të gjitha shkronjat përsëriten një numër çift herësh, me përjashtim ndoshta të njërës prej tyre, e cila mund të ndodhet një numër tek herësh.