关于使用 StringBuffer 而不使用 String.split 的反向单词。
例如反向
Hello world
的输出必须
olleh dlrow
不是
dlrow olleh
有什么想法制作这个程序吗?
关于使用 StringBuffer 而不使用 String.split 的反向单词。
例如反向
Hello world
的输出必须
olleh dlrow
不是
dlrow olleh
有什么想法制作这个程序吗?
这听起来像是一个家庭作业问题,所以我不会给你实际的代码,而是告诉你我使用伪代码的想法。
假设:您必须仅使用一个 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;
注意:这只是解决问题的众多方法之一。
这是进行的一种方法:
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), ' ');
}