Given an input string, reverse the string word by word.
For example,
Given s = "the sky is blue
",
return "blue is sky the
".
Update (2015-02-12):
For C programmers: Try to solve it in-place in O(1) space.
思路:我们可以先将整个字符串转置比如上面 the sky is blue转置成eulb si yks eht,然后再将每个空格之前的串转置 变为 blue is sky the
代码如下(已通过leetcode)
public class Solution {
public String reverseWords(String s) {
if(s==null||s.equals("")) return "";
s=s.trim();
StringBuilder sb=new StringBuilder();
StringBuilder res=new StringBuilder();
int i=s.length()-1;
int j=s.length();
while(i>=0) {
if(s.charAt(i)==' ') {
sb.append(s.substring(i+1,j)+" ");
j=i;
}
i--;
}
sb.append(s.substring(i+1,j));
if(sb.toString().trim().equals("")) return "";
else {
for(int k=0;k<sb.length();k++) {
if(sb.charAt(k)!=' ') res.append(sb.charAt(k));
else{
if(k+1<sb.length()) {
if(sb.charAt(k+1)!=' ') res.append(sb.charAt(k));
}
}
}
}
return res.toString();
}
}