Java 生成给定数字系统中的所有回文数?

Java 生成给定数字系统中的所有回文数?,java,algorithm,Java,Algorithm,我需要在给定的范围内,为给定的基数(应该能够达到10000)生成所有回文数。我需要一个有效的方法来做这件事 我无意中发现了,它与10号基数直接相关。我正在尝试将其调整为适用于“所有”基础: public static Set allPalindromic(长限制、int-base、char[]列表){ Set result=new HashSet(); 对于(long i=0;i我没有足够的声誉来评论,但如果您只缺少偶数长度的回文,那么很可能您的列表有问题。很可能您忘记在列表中添加一个空条目以生

我需要在给定的范围内,为给定的基数(应该能够达到10000)生成所有回文数。我需要一个有效的方法来做这件事

我无意中发现了,它与10号基数直接相关。我正在尝试将其调整为适用于“所有”基础:

public static Set allPalindromic(长限制、int-base、char[]列表){
Set result=new HashSet();

对于(long i=0;i我没有足够的声誉来评论,但如果您只缺少偶数长度的回文,那么很可能您的列表有问题。很可能您忘记在列表中添加一个空条目以生成1001,它应该类似于num(10)+empty(“”+rev(01).

对于所有可能的基数中的数字,没有那么多合适的字符(比如十六进制的
0xDEADBEEF
,我想
convert
有一些限制,比如36),所以忘掉外来数字,对于10000基数中的数字,使用简单的列表或数组,比如
[88881235583]

然后将限额转换为需求基数,并将其存储。 现在生成奇偶长度的对称数组,如
[175,2175]
[13,221,221,13]
。如果长度与限制长度相同,请比较数组值并拒绝过高的数字


您也可以使用限制数组作为起始,只生成值较小的回文。

Integer.parseInt
具有带
base
参数的重载,可以将任意基数的字符串转换为整数。
Integer.toString
也可以,您不必通过yourself@niceman=36:我不能转换为ba如果我使用它,ses超过36。如果值小于最小基数或大于最大基数,则使用值10。hmmm同意…是这样的,我现在明白了。但是char[]不能有空字符。我将char[]替换为String[]以包括“”,但我现在需要修复我的convertBack和convert方法。@Vepir如果您不想做太多更改,那么您只需显式处理这种情况。只需在循环使用listUnicode(utf16)之前执行str+revStr即可char最多可以保存65535的值。但我不确定带有此类char的输出是否可读。我的建议是避免使用转换(文本输出除外)
public static Set<String> allPalindromic(long limit, int base, char[] list) {

    Set<String> result = new HashSet<String>();

    for (long i = 0; i <= base-1 && i <= limit; i++) {
        result.add(convert(i, base, list));
    } 

    boolean cont = true;
    for (long i = 1; cont; i++) {
        StringBuffer rev = new StringBuffer("" + convert(i, base, list)).reverse();
        cont = false;
        for (char d : list) {   
                String n = "" + convert(i, base, list) + d + rev;
                if (convertBack(n, base, list) <= limit) {
                    cont = true;
                    result.add(n);
                }
        }
    }

    return result;
}