题目:
Given an input string, reverse the string word by word.
For example,
Given s = "the
sky is blue
",
return "blue is sky the
".
解答:
首先理解题意很重要,不然会浪费很多时间在细节上,先理清题目隐藏的一些细节:1,字符串的两端的空格要去掉;2,单词间只保留一个空格,如以下测试用例:
" "
"a "
" a "
" a"
" a b "
" a b "
" a b"
"a b "
" a b c d e f g "
代码如下:
class Q151_ReverseWords{
//ac
public static String reverseWords(String s){
if(s=="") return "";
String str="";
int start=0,end;
for(int i=s.length()-1;i>=0;){
while(i>=0&&s.charAt(i)==' ')
i--;
if(i!=start) str+=" ";
end=i;
while(i>=0&&s.charAt(i)!=' ') i--;
start=i;
str+=s.substring(start+1,end+1);
}
//去除两端空格
start=0;
end=str.length()-1;
while(start<=end&&str.charAt(start)==' ')
start++;
while(start<=end&&str.charAt(end)==' ')
end--;
return str.substring(start,end+1);
}
public static void main(String[] args){
String str=" a b ";
System.out.print(str);
System.out.println("--");
System.out.print(reverseWords(str));
System.out.println("--");
}
}
---EOF---