題目:
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("--"); } }