-3

何千もの例があることは知っていますが、自分で仕事をしたくてこれを作成しましたが、正しく機能しません。

    public String ReverseString(String str){
        str = str.toLowerCase();

        char normalArr[] = str.toCharArray();
        char reversedArr[] = new char[str.length()];

        for (int i=str.length()-1; i<=0; i--){
            int count = 0;
            reversedArr[count] = normalArr[i];
            count++;
        }

        String retValue = new String(reversedArr);
        return retValue;
    }
4

3 に答える 3

1

あなたのループの状態を見てください-それはそうあるべきですi >= 0
さらに-あなたのソリューションは不要な配列を割り当てます(ただし、あなたのものではなく、単一の配列でこれを実行するアルゴリズムがあります)-プログラムを一緒にコーディングするよう努めるべきだと思います良い成果。

于 2012-07-07T05:27:23.587 に答える
1

int count = 0;@zaskesの回答に加えて、ループ内ではなくループの前に必要です。

于 2012-07-07T05:28:29.717 に答える
0

逆のロジックを実行する実装を次に示します。

StringBuffer reversed = new StringBuffer(str.length());
int loc = str.length();
while (loc > 0) {
  char c1 = str.charAt(--loc);
  if (Character.isLowSurrogate(c1)) {
    assert loc >= 0;
    char c2 = str.charAt(--loc);
    reversed.append(c2);
  }
  reversed.append(c1);
}
return reversed.toString();

単純な追加のチートの使用を検討している場合は、次のStringBufferように置き換えることができます。

char[] reversed = new char[str.length()];
int next = 0;
...
reversed[next++] = c1; // instead of .append(c1)
于 2012-07-07T06:20:50.083 に答える