面試題58 - I.反轉單詞順序

面試題58 - I.反轉單詞順序

題目描述

輸入一個英文句子,翻轉句子中單詞的順序,但單詞內字符的順序不變。爲簡單起見,標點符號和普通字母一樣處理。例如輸入字符串"I am a student. “,則輸出"student. a am I”。

示例 1:

輸入: “the sky is blue”
輸出: “blue is sky the”
示例 2:

輸入: " hello world! "
輸出: “world! hello”
解釋: 輸入字符串可以在前面或者後面包含多餘的空格,但是反轉後的字符不能包括。
示例 3:

輸入: “a good example”
輸出: “example good a”
解釋: 如果兩個單詞間有多餘的空格,將反轉後單詞間的空格減少到只含一個。

題解

將字符串按空格分割,因爲單詞之間可能有多個空格,所以分割使用 s.split(" +");表示一個或多個空格;
倒序遍歷String數組,添加到StringBuilder中一個單詞一個空格,最後返回sb.toSting();再去掉兩端可能存在的空格即可;代碼如下:(這裏使用s.split(" +")分割雖然代碼量少但匹配多個空格後時間大大增加,幾乎所有時間都用在這裏)

class Solution {
    public String reverseWords(String s) {
        String[] st = s.split(" +");
		StringBuilder sb = new StringBuilder();
		for(int i = st.length-1;i>=0;i--) {
			sb.append(st[i]).append(" ");
		}
	return sb.toString().trim();
    }
}
提交結果

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章