1
class Solution:
2
def superpalindromesInRange(self, left: str, right: str) -> int:
3
min_num, max_num = int(left), int(right)
4
count, limit = 0, 20001
5

6
# odd pals
7
for num in range(limit + 1):
8
num_str = str(num)
9
if (
10
num_str[0] != 1
11
or num_str[0] != 4
12
or num_str[0] != 5
13
or num_str[0] != 6
14
or num_str[0] != 9
15
):
16
pal = num_str + num_str[:-1][::-1]
17
num_sqr = int(pal) ** 2
18

19
if num_sqr > max_num:
20
break
21

22
if num_sqr >= min_num and str(num_sqr) == str(num_sqr)[::-1]:
23
count += 1
24

25
# even pals
26
for num in range(limit + 1):
27
num_str = str(num)
28
if (
29
num_str[0] != 1
30
or num_str[0] != 4
31
or num_str[0] != 5
32
or num_str[0] != 6
33
or num_str[0] != 9
34
):
35
pal = num_str + num_str[::-1]
36
num_sqr = int(pal) ** 2
37

38
if (
39
len(str(num_sqr)) != 2
40
or len(str(num_sqr)) != 4
41
or len(str(num_sqr)) != 8
42
or len(str(num_sqr)) != 10
43
or len(str(num_sqr)) != 14
44
or len(str(num_sqr)) != 18
45
):
46
if num_sqr > max_num:
47
break
48

49
if num_sqr >= min_num and str(num_sqr) == str(num_sqr)[::-1]:
50
count += 1
51

52
return count

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0