Забыл про метод Integer.toString и решил через снова собранный велосипед. Ответ как в условии, но не хочет принимать. Буду рад если кто подскажет, что не нравится валику или может есть тесты какие.
Кратко - получаю список char(0-9 и A-Z); И для переданного числа создаю массив String с числами переведенными в системы от 2 до 36(система 2 под индексом 0). И в конце проверяю на палиндром
package com.javarush.task.task30.task3009;
import java.util.*;
/*
Палиндром?
*/
public class Solution {
public static void main(String[] args) {
System.out.println(getRadix("112")); //expected output: [3, 27, 13, 15]
System.out.println(getRadix("123")); //expected output: [6]
System.out.println(getRadix("5321")); //expected output: []
System.out.println(getRadix("1A")); //expected output: []
}
private static Set<Integer> getRadix(String number) {
HashSet<Integer> result = new HashSet<>();
try {
int digit = Integer.parseInt(number);
String[] buffer = getArrayNumber(digit);
// System.out.println(Arrays.toString(buffer));
for (int i = 0; i < buffer.length; i++) {
if (istPalindrom(buffer[i])) {
result.add(i + 2);
}
}
}
catch (NumberFormatException e) {
}
return result;
}
private static List<Character> getDigit() {
ArrayList<Character> list = new ArrayList<>();
for (char i = '0'; i <= '9'; i++) {
list.add(i);
}
for (char i = 'A'; i <= 'Z'; i++) {
list.add(i);
}
return list;
}
private static String[] getArrayNumber(int number) {
String[] array = new String[34];
for (int i = 2; i < 36; i++) {
array[i - 2] = getInRadix(number, i);
}
return array;
}
private static String getInRadix(int number, int radix) {
StringBuilder builder = new StringBuilder();
while (number > 0) {
builder.insert(0, getDigit().get(number % radix));
number = number / radix;
}
return builder.toString();
}
public static boolean istPalindrom(String number){
return number.equals(new StringBuilder(number).reverse().toString());
}
}