1. 程式人生 > >翻轉單詞的順序(思路與實現)

翻轉單詞的順序(思路與實現)

題目描述

牛客最近來了一個新員工Fish,每天早晨總是會拿著一本英文雜誌,寫些句子在本子上。同事Cat對Fish寫的內容頗感興趣,有一天他向Fish借來翻看,但卻讀不懂它的意思。例如,“student. a am I”。後來才意識到,這傢伙原來把句子單詞的順序翻轉了,正確的句子應該是“I am a student.”。Cat對一一的翻轉這些單詞順序可不在行,你能幫助他麼?

思路:

首先我想到的就是使用一個split方法,將這個字串轉化為一個數組,然後對這個陣列兩頭交換順序,然後遍歷這個陣列,將這個陣列中的每一個值都放入到這個stringbuffer中,但是我剛剛開始感覺自己很傻,明明可以不用交換順序,我可以直接反向遍歷這個陣列,然後每次遍歷一個值加入到這個stringbuffer中並且加上空格,最後一個不用。

但是需要注意的是這裡面有一個坑,當我的這個陣列是一個空格字元創,那麼輸出的也應該是一個空格字元創,然後如果是一個空字串,那麼這個時候和空格字元創的處理方式是一樣的。

實現(我蹩腳的程式碼給大家看看):

public class Solution {
    public String ReverseSentence(String str) {
        if(str.trim().length() == 0){
            return str;
        }
        String[] strs = str.split(" ");
        int start = 0;
        int end = strs.length - 1;
        /*我就是一個傻子,剛剛開始我就使用這種方法,我可以直接遍歷和這個陣列,然後從後面拿到這個值*/
        /*
        while(start < end){
            String temp = strs[start];
            strs[start] = strs[end];
            strs[end] = temp;
            start ++;
            end --;
        }
        StringBuffer buffer = new StringBuffer();
        for(int i = 0; i < strs.length; i ++){
            if( i != strs.length - 1){
                buffer.append(strs[i] + " ");
            }else{
                buffer.append(strs[i]);
            }
        }
        return buffer.toString();
        */
        StringBuffer buffer = new StringBuffer();
        for(int i = strs.length - 1; i >= 0; i --){
            buffer.append(strs[i]);
            if(i > 0){
                buffer.append(" ");
            }
        }
        return buffer.toString();
       
        
    }
}