剑指 Offer 58 - I. 翻转单词顺序

这道题的链接: 剑指 Offer 58 - I. 翻转单词顺序
这道题我们刚开始审题,我感觉可以使用双指针来解决,具体思路就是从尾到头便利字符串树,然后将i,j两个变量定位在此,然后把i往前定位到倒数第一个单词的位置,新建一个StringBuilder接收单词加上空格,具体代码如下:

class Solution{
   public String reverseWords(String s) {
       s = s.trim();
       int j = s.length() - 1, i=j;
       StringBuilder res = new StringBuilder();
       while(i >= 0){
           while(i >= 0 &&  s.charAt(i) != ' '){
               i--;
           }
           res.append(s.substring(i + 1, j + 1) + " ");
           while(i >= 0 && s.charAt(i)  == ' ') i--;
           j = i;
       }
       return res.toString().trim();
   }
}

第二种方法就是很土的方法,因为这句话是用空格分割的,我们就用空格分割成数组,然后从后向前遍历数组,存到新的StringBuilder中,转化成数组就成了。

class Solution {
    public String reverseWords(String s) {
        String[] strs = s.trim().split(" ");
        StringBuilder res = new StringBuilder();
        for(int i = strs.length() - 1; i >= 0; i--){
            if(strs[i].equals("")) { 
                continue;
            }
            res.append(strs[i] + " ");
        }
        return res.ToString().trim();
    }
}

在面试的时候。。。千万别这么写,很土,写出来面试官就认为你是api工程师。。凉凉!!