空格分割
public class Solution { public String ReverseSentence(String str) { if(str==null||str.equals("")) return str; //疑惑 不知道为什么str.equals(" ")通不过测试用例 //今天又看到这个题了 突然get到如果有一堆空格就不行。 String[] strs=str.split(" "); if(strs.length<=1) return str; int l=0,r=strs.length-1; while(l<r){ String s=strs[l]; strs[l]=strs[r]; strs[r]=s; l++; r--; } String res=""; for(int i=0;i<strs.length-1;i++) res+=strs[i]+" "; res+=strs[strs.length-1]; return res; } } /* //滑动窗口思想 public String ReverseSentence(String str) { if (str == null || str.trim().length() == 0) return str; char[] chars = str.toCharArray(); reverseChars(chars, 0, str.length() - 1); // 利用滑动窗口 // 遇到' '执行翻转 int l = 0; int r = 0; while (l < str.length()) { if (chars[r] == ' ') { reverseChars(chars, l, r - 1); // 交换完之后,一起跳过' ' r++; l = r; } if (r == str.length() - 1) { reverseChars(chars, l, r); // 到了最后交换玩就break,否则r会出现越界,可以在while中加对r的判断 break; } r++; } return String.valueOf(chars); } private void reverseChars(char[] chars, int l, int r) { while (l < r) { char temp = chars[l]; chars[l] = chars[r]; chars[r] = temp; l++; r--; } } */