每日一題-翻轉字符串裏的單詞

今天是2020年4月10日,每日一題的第六天。

題目描述

給定一個字符串,逐個翻轉字符串中的每個單詞。

示例 1:

輸入: "the sky is blue"
輸出: "blue is sky the"

示例 2:

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

示例 3:

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

說明:

無空格字符構成一個單詞。
輸入字符串可以在前面或者後面包含多餘的空格,但是反轉後的字符不能包括。
如果兩個單詞間有多餘的空格,將反轉後單詞間的空格減少到只含一個。

題目分析

在Java中有分隔字符串的函數split,可以以空格作爲分割,在從後向前依次追加,需要注意,在追加過程後,某一個分割得到的元素可能爲空格(空白元素),這樣的元素不能進行追加。在分隔字符串時,同樣可以採用正則表達式,來將空格識別,將多個空格替換爲一個空格,在使用split進行分割。

參考代碼

public class ReverseWords {
    public String reverseWords(String s) {
        if (s.isEmpty()) {
            return "";
        }
        // 這裏可以使用正則表達式將多個空格替換爲一個空格
        // String[] split = Pattern.compile("\\s+").matcher(s).replaceAll(" ").split(" ");
        String[] strings = s.split(" ");

        StringBuilder stringBuilder = new StringBuilder();
        boolean first = true;
        for (int i = strings.length - 1; i >= 0; i--) {
            if (!strings[i].isEmpty()) {
                stringBuilder.append(first ? "" : " ").append(strings[i]);
                first = false;
            }
        }

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