906. Super Palindromes
Văn bản bài toán được dịch từ tiếng Nga theo ngôn ngữ giao diện. Mã không thay đổi.
Если задан số nguyên mảng nums, переместите все четные числа в начало mảngа, а затем все нечетные. return любой mảng, удовлетворяющий этому условию.
Ví dụ:
Input: left = "4", right = "1000"
Output: 4
C# lời giải
đã khớp/gốcpublic class Solution {
private bool IsPalindrome(long x) {
string s = x.ToString();
char[] arr = s.ToCharArray();
Array.Reverse(arr);
return s == new string(arr);
}
public int SuperpalindromesInRange(string left, string right) {
long leftNum = long.Parse(left);
long rightNum = long.Parse(right);
int count = 0;
for (int i = 1; i < 100000; i++) {
string s = i.ToString();
long palin1 = long.Parse(s + new string(s.Reverse().ToArray()));
long palin2 = long.Parse(s + new string(s.Reverse().Skip(1).ToArray()));
if (palin1 * palin1 > rightNum) {
break;
}
if (palin1 * palin1 >= leftNum && IsPalindrome(palin1 * palin1)) {
count++;
}
if (palin2 * palin2 >= leftNum && palin2 * palin2 <= rightNum && IsPalindrome(palin2 * palin2)) {
count++;
}
}
return count;
}
}
C++ lời giải
bản nháp tự động, xem lại trước khi gửi#include <bits/stdc++.h>
using namespace std;
// Auto-generated C++ draft from the C# solution. Review containers, LINQ and helper types before submit.
class Solution {
public:
private bool IsPalindrome(long x) {
string s = x.ToString();
char[] arr = s.ToCharArray();
Array.Reverse(arr);
return s == new string(arr);
}
public int SuperpalindromesInRange(string left, string right) {
long leftNum = long.Parse(left);
long rightNum = long.Parse(right);
int count = 0;
for (int i = 1; i < 100000; i++) {
string s = i.ToString();
long palin1 = long.Parse(s + new string(s.Reverse().ToArray()));
long palin2 = long.Parse(s + new string(s.Reverse().Skip(1).ToArray()));
if (palin1 * palin1 > rightNum) {
break;
}
if (palin1 * palin1 >= leftNum && IsPalindrome(palin1 * palin1)) {
count++;
}
if (palin2 * palin2 >= leftNum && palin2 * palin2 <= rightNum && IsPalindrome(palin2 * palin2)) {
count++;
}
}
return count;
}
}
Java lời giải
đã khớp/gốcclass Solution {
private boolean isPalindrome(long x) {
String s = Long.toString(x);
return s.equals(new StringBuilder(s).reverse().toString());
}
public int superpalindromesInRange(String left, String right) {
long leftNum = Long.parseLong(left);
long rightNum = Long.parseLong(right);
int count = 0;
for (int i = 1; i < 100000; i++) {
String s = Integer.toString(i);
long palin1 = Long.parseLong(s + new StringBuilder(s).reverse().toString());
long palin2 = Long.parseLong(s + new StringBuilder(s.substring(0, s.length() - 1)).reverse().toString());
if (palin1 * palin1 > rightNum) {
break;
}
if (palin1 * palin1 >= leftNum && isPalindrome(palin1 * palin1)) {
count++;
}
if (palin2 * palin2 >= leftNum && palin2 * palin2 <= rightNum && isPalindrome(palin2 * palin2)) {
count++;
}
}
return count;
}
}
Python lời giải
đã khớp/gốcdef 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
Go lời giải
đã khớp/gốcpublic class Solution {
private bool IsPalindrome(long x) {
string s = x.ToString();
char[] arr = s.ToCharArray();
Array.Reverse(arr);
return s == new string(arr);
}
public int SuperpalindromesInRange(string left, string right) {
long leftNum = long.Parse(left);
long rightNum = long.Parse(right);
int count = 0;
for (int i = 1; i < 100000; i++) {
string s = i.ToString();
long palin1 = long.Parse(s + new string(s.Reverse().ToArray()));
long palin2 = long.Parse(s + new string(s.Reverse().Skip(1).ToArray()));
if (palin1 * palin1 > rightNum) {
break;
}
if (palin1 * palin1 >= leftNum && IsPalindrome(palin1 * palin1)) {
count++;
}
if (palin2 * palin2 >= leftNum && palin2 * palin2 <= rightNum && IsPalindrome(palin2 * palin2)) {
count++;
}
}
return count;
}
}
Algorithm
find все палиндромы до корня из right.
Проверить, являются ли квадраты этих палиндромов палиндромами и лежат ли в диапазоне [left, right].
Подсчитать количество таких суперпалиндромов.
😎
Vacancies for this task
việc làm đang hoạt động with overlapping task tags are đã hiển thị.
Chưa có việc làm đang hoạt động.