0

关于使用 StringBuffer 而不使用 String.split 的反向单词。
例如反向
Hello world
的输出必须

    olleh dlrow

不是

    dlrow olleh

有什么想法制作这个程序吗?

4

3 回答 3

0

这听起来像是一个家庭作业问题,所以我不会给你实际的代码,而是告诉你我使用伪代码的想法。

假设:您必须仅使用一个 StringBuffer 就地完成。单词用空格隔开。您不能使用 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;

注意:这只是解决问题的众多方法之一。

于 2012-04-18T09:12:53.707 回答
0

这是进行的一种方法:

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 回答