2

私はこの質問を試していました:

Recursion を使用して、ユーザーが入力した文字列のすべてのアナグラムを表示する関数を作成し、そのすべての母音がすべてのアナグラムの末尾に配置されるようにします。(例: 再帰 => Rcrsneuio、cRsnroieu など) 最適化します。

このサイトから : http://erwnerve.tripod.com/prog/recursion/magic.htm

これは私がやったことです:

public static void permute(char[] pre,char[] suff) {
    if (isEmpty(suff)) {
        //result is a set of string. toString() method will return String representation of the array.
        result.add(toString(moveVowelstoEnd(pre)));
        return;
    }
    int sufflen = getLength(suff); //gets the length of the array
    for(int i =0;i<sufflen;i++) {
        char[] tempPre = pre.clone();
        char[] tempSuf = suff.clone();
        int nextindex = getNextIndex(pre); //find the next empty spot in the prefix array
        tempPre[nextindex] = tempSuf[i];
        tempSuf = removeElement(i,tempSuf); //removes the element at i and shifts array to the left
        permute(tempPre,tempSuf);
    }

}

public static char[] moveVowelstoEnd(char[] input) {
    int c = 0;
    for(int i =0;i<input.length;i++) {
        if(c>=input.length)
            break;
        char ch = input[i];
        if (vowels.contains(ch+"")) {
            c++;            
            int j = i;
            for(;j<input.length-1;j++)
                input[j] = input[j+1];
            input[j]=ch;
            i--;
        }
    }
    return input;
}

質問の最後の部分は「最適化する」です。これを最適化する方法がわかりません。誰でも助けることができますか?

4

1 に答える 1

3

すべての母音を v にまとめる

すべての子音を w にグループ化します

アナグラムのペアごとに、結果を連結します

于 2013-04-30T19:01:01.367 に答える