您的位置:首页 > 其它

【LeetCode】Reverse Words in a String

2014-03-12 22:41 405 查看
题目:

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---
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: