随机回文生成器Java

时间:2013-11-13 23:40:01

标签: java random palindrome

我在弄清楚如何使用随机字母制作回文生成器方面遇到了一些麻烦。例如asdffdsa,kiutgtuik。我需要输入大小并使用它来制作回文。我已经有了一些代码,如果你能帮助我指出正确的方向,我感到很好奇。我也想尝试不使用数组。

import java.util.Random;

public class PP425 {
    public static String generatePalindrome (int size) {
        Random rand = new Random();
        char ch = (char)(rand.nextInt(26) + 97);
        String random = "";
        for (int i = 0; i < size; i++) {

        }


        return random;
    }
    public static void main(String[] args) {
        System.out.println(generatePalindrome(3));
    }
}

3 个答案:

答案 0 :(得分:1)

创建大小为char[]的{​​{1}}。生成0到25之间的K个数字并添加“a”。现在你生成的char只是将它放在random()begin中并增加end,递减begin。这样做直到end

begin <= end.

答案 1 :(得分:0)

这是你想要的吗?如果长度较大,请使用StringBuilder而不是String。

import java.util.Random;

public class PP425 {
    public static String generatePalindrome (int size) {
        Random rand = new Random();
        StringBuilder random = new StringBuilder(size);
        for (int i = 0; i < (int)Math.ceil((double)size/2); i++) {
            char ch = (char)(rand.nextInt(26) + 97);
            random.append(ch);
        }
        for(int i = size/2-1; i >= 0; i--)
            random.append(random.charAt(i));

        return random.toString();
    }
    public static void main(String[] args) {
        System.out.println(generatePalindrome(3));
    }
}    

答案 2 :(得分:0)

random.nextInt()的调用不应放在for循环之外,而应放在String循环之内。您不一定需要使用数组。您可以简单地连接StringBuilder(或使用for)。

StringBuilder.reverse循环中,您构建了回文的前半部分。然后,您可以使用for方法生成下半部分。

如果您的尺码是奇数,请注意中间字母!

此外,您的{{1}}循环应该只运行到一半大小。或者(大小 - 1)/ 2,如果大小是奇数。