classSolution{publicStringreverseWords(String s){String[] words = s.split(" ");StringBuilder sb =newStringBuilder();int len = words.length;for(int i = len -1; i >=0; i--){//去除空格String str = words[i];if(str.equals(""))continue;
sb.append(str);}return sb.toString().trim();}}
[思路分析二, 不借助API的最优实现]
[代码实现]
classSolution{publicStringreverseWords(String s){char[] charArray=s.toCharArray();int left=0,right=s.length()-1;// 清除字符串两边的空格// 清除左边while(charArray[left]==' '){
left++;}// 清除右边while(charArray[right]==' '){
right--;}StringBuilder sb=newStringBuilder();// 开始添加单词while(left<=right){int index=right;// index 向左遍历找到第一个空格while(index>=left&&charArray[index]!=' '){
index--;}// 现在 index 已经找到第一个空格,i=index+1 后移到字符串出现的位置// 添加字符串for(int i=index+1;i<=right;i++){
sb.append(charArray[i]);}// 如果不是最后一个单词,就添加空格if(index>left) sb.append(' ');// 使用 index 指针 跳过中间可能出现的空格while(index>=left&&charArray[index]==' '){
index--;}// 把 right 放到下一个单词出现的位置,继续循环
right=index;}return sb.toString();}}