0

String.splitを使わずにStringBufferを使ったリバースワードについて。
たとえば、reverse
Hello world
出力は

    olleh dlrow

いいえ

    dlrow olleh

このプログラムを作るアイデアはありますか??

4

3 に答える 3

0

これは宿題の質問のように聞こえるので、実際のコードを提供する代わりに、疑似コードを使用して私が考えていることを説明します。

前提: StringBuffer を 1 つだけ使用して、その場で行う必要があります。単語はスペースで区切ります。StringBuffer 以外は使用できません。

というメソッドを書く必要があります。reverse

/**
 * This method reverse the word starting at startIndex 
 * and of length wordLength. For example:
 * StringBuffer buf = new StringBuffer("hello world");
 * reverse(buf, 0, 5);
 * will result in buf being "olleh world"
 */
reverse(StringBuffer s, int startIndex, int wordLength)

/* Now the pseudo code */
Given StringBuffer sb;
Find all the indexes of all the spaces in sb;
Using the indexes found to calculate the startIndex of each word and the lengths of the word;
call reverse for each of the calculated indexes and lengths;

注: これは、問題を解決する多くの方法の 1 つにすぎません。

于 2012-04-18T09:12:53.707 に答える
0

続行する方法の 1 つを次に示します。

User a result buffer to store the final string reversed word by word
Use a temp buffer to store each word you fond in the original string

Iterate over the chars in your buffer.
    // Identify a word: a word is terminated when you find a space
    If the actual char is not space then save it to temp buffer
    If the actual char is a space then you have a word witch is stored in temp buffer
        reverse that temp buffer and add it to the result buffer
        add a space the the result buffer
        clear the temp buffer so you can save the next word in it

これはコードでどのように見えるかです

これは宿題なので削除しました;-)

入力:

"   HeLlo   world   "

出力:

'   olLeH   dlrow   '
于 2013-03-23T21:40:21.597 に答える
0

ライブラリをインポートして、この機能を使用します。

import org.apache.commons.lang.StringUtils;

String reverseWords(String string) {
    return StringUtils.reverseDelimited(StringUtils.reverse(string), ' ');
}
于 2012-04-18T09:06:23.567 に答える