Сложность: hard
Если задан целочисленный массив nums, переместите все четные числа в начало массива, а затем все нечетные. Верните любой массив, удовлетворяющий этому условию.
Пример:
Input: left = "4", right = "1000"
Output: 4
👨💻 Алгоритм:
1⃣Найти все палиндромы до корня из right.
2⃣Проверить, являются ли квадраты этих палиндромов палиндромами и лежат ли в диапазоне [left, right].
3⃣Подсчитать количество таких суперпалиндромов.
😎 Решение:
class Solution {
func isPalindrome(_ x: Int) -> Bool {
let s = String(x)
return s == String(s.reversed())
}
func superpalindromesInRange(_ left: String, _ right: String) -> Int {
let left = Int(left)!
let right = Int(right)!
var count = 0
for i in 1...100000 {
let s = String(i)
let palin1 = Int(s + String(s.reversed()))!
let palin2 = Int(s + String(s.dropLast().reversed()))!
if palin1 * palin1 > right {
break
}
if palin1 * palin1 >= left && isPalindrome(palin1 * palin1) {
count += 1
}
if palin2 * palin2 >= left && palin2 * palin2 <= right && isPalindrome(palin2 * palin2) {
count += 1
}
}
return count
}
}Ставь 👍 и забирай 📚 Базу знаний