题目描述:
Given an input string, reverse the string word by word.
For example,
Given s = "the sky is blue
",
return "blue is sky the
".
- What constitutes a word?
A sequence of non-space characters constitutes a word. - Could the input string contain leading or trailing spaces?
Yes. However, your reversed string should not contain leading or trailing spaces. - How about multiple spaces between two words?
Reduce them to a single space in the reversed string.
这个题刚拿到手的时候感觉很简单,并且很快把代码实现,但是提交之后错误百出
1,如果输入字符串为空的时候应该返回“”;
2,就是关于空格的取舍问题,虽然java中用String.Split(" ")可以把字符串中的空格去除,但是当有多个空格连续,或者在开头或者结束的空格
的处理是非常关键的,这也是题目考查的重点
3,我在刚开始解决这个问题的时候忽略了对开始为空格的考虑,这还包括两种情况,一种是只有一个空格,一种是有连续多个空格
这里我跳出了一开始的思路,就直接判断是不是开始字符就可以了
代码:
public static String reverseWords(String s) {
String Scut[] = s.split(" ");
if(Scut.length ==0){
return "";
}
String Ssor = "";
int i=Scut.length-1;
while(i>=0){
if(Ssor.length() ==0){
//The String`s Begin
if(Scut[i].length() != 0){
Ssor += Scut[i];
}
}else{
if(Scut[i].length() != 0){
Ssor += " " + Scut[i];
}
}
i--;
}
return Ssor;
}