[LeetCode]Reverse Words in a String

2014-11-24 10:37:54 · 作者: · 浏览: 0

题目:

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