x son berilgan, funksiya agar x palindrom bo’lsa true, aks holda false qaytarishi kerak. Palindrom son deb ohiridan boshiga qarab o’qilganda ham bir xil chiqadigan sonlarga aytiladi. Masalan, 121 – palindrom, 123 – palindrom emas. Shuningdek, -121 ham palindrom emas, chunki teskari o’qilganda 121- bo’lib qoladi.
Ishlash tartibi
Eng oson varianti – sonni stringga, so’ngra arrayga o’girish, uni ohiridan boshiga qarab tartiblash (reverse), so’ngra yana string va songa aylantirish. Chiqqan natija x son bilan solishtirilib, teng bo’lsa true qaytariladi.
Ammo ba’zan qo’shimcha shart sifatida, stringga aylantirishdan qaytarilishi mumkin. Bu holda biz reverse sonini sikl ichida topishga harakat qilamiz:
x = 12321,reversed = 0bo’lsin. Biz dastlab x ning ohirgi sonini olamiz:x % 10. Unireversedga qo’shamiz. x ning ohirgi sonini tashlab ketamiz:1232x = 1232,reversed = 0.reversedni 10 ga ko’paytiramiz. x ning ohirgi sonini olibreversedga qo’shamiz:reversed = reversed * 10 + x % 10. x ning ohirgi sonini tashlab ketamiz: 123x = 123,reversed = 12.reversedni 10 ga ko’paytiramiz. x ning ohirgi sonini olibreversedga qo’shamiz.reversed = 123,x = 12.reversedqiymatixdan ortib ketdi. Siklni davom ettirishdan ma’no yo’q, uni. to’xtatamiz.xsoni toq raqamli uzunlikdagi son bo’lgani uchun, uning o’rtadagi qismi reversed’ga o’tib ketdi. Bizxvareversedni solishtirishdan avvalreversedning ohirgi sonini tashlab ketamiz, chunki o’rtadagi son to’g’ri va teskari o’qiganda ham o’rtada qolgan bo’lardi. Shundareversed = 12,x = 12ga teng bo’ldi. Natija:x = reversed. Agar x ning raqamlari soni juft bo’lganda qo’shimcha tekshirishning hojati bo’lmasdi.
Yuqoridagi kodni yangi algoritm bo’yicha qaytadan yozib chiqamiz.
Ishlash vaqti O(n / 2) ga teng.