https://www.lintcode.com/problem/53/?_from=cat
[]
how many bugs?
[code]
public class Solution {
/*
* @param s: A string
* @return: A string
*/
public String reverseWords(String s) {
// write your code here
if(s==null){
return null;
}
if(s.length()==0){
return "";
}
int n = s.length();
int l=-1, r=n;
for(int i=0;i<n;i++){
if(s.charAt(i)!=' '){
l = i;
break;
}
}
for(int i=n-1;i>=0;i--){
if(s.charAt(i)!=' '){
r = i;
break;
}
}
int m = r + 1 - l;
char[] arr = new char[m];
for(int i=0;i<m;i++){
arr[i] = s.charAt(l+i);
}
swap(arr, 0, m-1);
int i = 0;
while(i<arr.length){
int j = i;
while(j<arr.length && arr[j]!=' '){
j++;
}
swap(arr, i, j-1);
i = j+1;
}
StringBuilder sb = new StringBuilder();
for(i=0;i<arr.length;i++){
if(arr[i]== ' ' || arr[i+1]== ' '){
continue;
}
sb.append(arr[i]);
}
return sb.toString();
}
void swap(char[] arr, int l, int r){
while(l<r){
//swap
char ch = arr[l];
arr[l] = arr[r];
arr[r] = ch;
l++;
r--;
}
}
}