您的位置:首页 > 其它

Leetcode Reverse Words in a String

2016-07-06 00:49 330 查看
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.

Difficulty: Medium

public class Solution {
public StringBuilder reverseHelper(StringBuilder sb, int start, int end){
if(start > end){
return new StringBuilder("");
}
StringBuilder res = new StringBuilder();
for(int i = end; i >= start; i--){
res.append(sb.charAt(i));
}
return res;
}
public String reverseWords(String s) {
if(s.length() == 0) return "";
StringBuilder sb = new StringBuilder(s);
StringBuilder res = new StringBuilder();
while(sb.length() > 0 &&sb.charAt(0) == ' ') sb.deleteCharAt(0);
while(sb.length() > 0 &&sb.charAt(sb.length() -1) == ' ') sb.deleteCharAt(sb.length() -1);
int start = 0, end = 0;
while(start < sb.length() && end < sb.length()){
while(start < sb.length() && sb.charAt(start) == ' '){
start++;
}
end = start;
while(end < sb.length() && sb.charAt(end) != ' '){
end++;
}
res.append(reverseHelper(sb, start, end - 1));
res.append(" ");
start = end;
}
if(res.length() > 0 && res.charAt(res.length() - 1) == ' ')
res.deleteCharAt(res.length() - 1);

return res.reverse().toString();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: