1

ランダムな文字から回文ジェネレーターを作成する方法を理解するのに苦労しています。例: 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));
    }
}
4

3 に答える 3

1

char[]サイズ の を作成しますKrandom()0 から 25 までの数値を生成し、「a」を追加します。今、あなたが生成するどのような文字でも、それbeginを入れendて増加させbegin、減少させますend。までこれを行うbegin <= end.

public static String fun(int k){
        long seed = System.currentTimeMillis();
        Random random1 = new Random(seed);
        char[] a = new char[k];
        int begin=0, end=k-1;
        while(begin<=end){
            char c = (char)(random1.nextInt(26)+'a');
            a[begin]=c;
            a[end]=c;
            begin++;end--;
        }
        return String.valueOf(a);
    }
于 2013-11-13T23:57:12.330 に答える
0

への呼び出しは、ループの外側ではなく、ループの内側にrandom.nextInt()配置する必要があります。for必ずしも配列を使用する必要はありません。単純にStrings を連結する (またはStringBuilder代わりに使用する) ことができます。

forループでは、回文の前半を作成します。次に、StringBuilder.reverseメソッドを使用して後半を生成できます。

サイズが奇数の場合は、真ん中の文字に注意してください。

また、forループはサイズの半分まで実行する必要があります。または (サイズ - 1) / 2 (サイズが奇数の場合)。

于 2013-11-13T23:47:50.793 に答える
0

これは、あなたの望むことですか?長いサイズの場合は、String の代わりに StringBuilder を使用します。

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));
    }
}    
于 2013-11-13T23:44:57.593 に答える