Reverse Words in a String
Given an input string, reverse the string word by word.
For example,
Given s = "
return "
Given s = "
the sky is blue",return "
blue is sky the".
Clarification:
- What constitutes a word?
A sequence of non-space characters constitutes a word. - Could the input string contain leading or trailing spaces?
Yes. However, your reversed string should not contain leading or trailing spaces. - How about multiple spaces between two words?
Reduce them to a single space in the reversed string.
Solution:
public class Solution {
public String reverseWords(String s) {
if(s.isEmpty() || s.length() == 0) return s;
StringBuffer res = new StringBuffer();
int t, h;
for(int i = s.length() - 1; i >= 0; i--) {
while(i >= 0 && s.charAt(i) == ' ') i--;
// set tail pointer
if(i < 0) break;
t = i;
h = t;
// set head pointer
while(i >= 0 && s.charAt(i) != ' ') { h = i; i--; }
// append this word (append a space if find more than two words)
if(h <= t && res.length() > 0) res.append(' ');
for(int j = h; j <= t; j++) {
res.append(s.charAt(j));
}
}
return res.toString();
}
}
-------------------------------------
OK, finally i'm back! second round, go~
No comments:
Post a Comment