翻轉單詞的順序(思路與實現)
阿新 • • 發佈:2018-12-31
題目描述
牛客最近來了一個新員工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(); } }