1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| class Solution { public String reverseWords(String s) { //将多余的空格去除 StringBuffer sb=new StringBuffer(s.replaceAll(" +"," ").trim()); //整个字符串反转 sb.reverse();
//窗口指针 int i=-1,j=0; for(;j<sb.length();j++) { //如果i是负一,且遇到非0字符,把i设定为窗口头 if(i==-1&&sb.charAt(j)!=' ') { i=j; } //要是找到空格,或者已经到了最后一个字符,就在i-(j-1)的窗口范围里反转 if(i!=-1&&(sb.charAt(j)==' '||j==sb.length()-1)) { if(j==sb.length()-1)j++; for(int k=0;k<(j-i)/2;k++) { char c1=sb.charAt(i+k); char c2=sb.charAt(j-1-k); sb.replace(i+k,i+k+1,String.valueOf(c2)); sb.replace(j-1-k,j-1-k+1,String.valueOf(c1)); } i=-1; }
} return sb.toString(); } }
|