Python | LeetCode
9.97K subscribers
167 photos
2 videos
1.14K links
Cайт easyoffer.ru
Реклама @easyoffer_adv
ВП @easyoffer_vp

Тесты t.iss.one/+20tRfhrwPpM4NDQy
Вопросы собесов t.iss.one/+cnJC0_ZeZ_I0OGY6
Вакансии t.iss.one/+cXGKkrOY2-w3ZTky
Download Telegram
Задача: 906. Super Palindromes
Сложность: hard

Если задан целочисленный массив nums, переместите все четные числа в начало массива, а затем все нечетные. Верните любой массив, удовлетворяющий этому условию.

Пример:
Input: left = "4", right = "1000"
Output: 4


👨‍💻 Алгоритм:

1⃣Найти все палиндромы до корня из right.

2⃣Проверить, являются ли квадраты этих палиндромов палиндромами и лежат ли в диапазоне [left, right].

3⃣Подсчитать количество таких суперпалиндромов.

😎 Решение:
def is_palindrome(x):
return str(x) == str(x)[::-1]

def superpalindromesInRange(left, right):
left, right = int(left), int(right)
count = 0
max_root = int(right**0.5) + 1

for i in range(1, 100000):
s = str(i)
palin1 = int(s + s[::-1])
palin2 = int(s + s[-2::-1])

if palin1**2 > right:
break
if palin1**2 >= left and is_palindrome(palin1**2):
count += 1
if palin2**2 >= left and palin2**2 <= right and is_palindrome(palin2**2):
count += 1

return count


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM