String.splitを使わずにStringBufferを使ったリバースワードについて。
たとえば、reverse
Hello world
出力は
olleh dlrow
いいえ
dlrow olleh
このプログラムを作るアイデアはありますか??
String.splitを使わずにStringBufferを使ったリバースワードについて。
たとえば、reverse
Hello world
出力は
olleh dlrow
いいえ
dlrow olleh
このプログラムを作るアイデアはありますか??
これは宿題の質問のように聞こえるので、実際のコードを提供する代わりに、疑似コードを使用して私が考えていることを説明します。
前提: 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 つにすぎません。
続行する方法の 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 '
ライブラリをインポートして、この機能を使用します。
import org.apache.commons.lang.StringUtils;
String reverseWords(String string) {
return StringUtils.reverseDelimited(StringUtils.reverse(string), ' ');
}