LeetCode-翻转字符串里的单词

给定一个字符串,逐个翻转字符串中的每个单词。

快速浏览:
  1. 空白输入
  2. 特殊情况
  3. 常见类库

输入: " hello world! "

输出: "world! hello"

import java.util.ArrayList;
class Solution {
public String reverseWords(String s) {
        if (s == null || s.length() == 0)
            return "";
        ArrayList arr = new ArrayList<>();
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < s.length(); i++) {
            if (s.charAt(i) != ' ') {
                sb.append(s.charAt(i));
                if (i == s.length() - 1)
                    arr.add(sb.toString());
            } else {
                if (sb.length() != 0)
                    arr.add(sb.toString());
                sb.delete(0, sb.length());
            }
        }
        StringBuilder ans = new StringBuilder();
        for (int i = arr.size() - 1; i >= 0; i--) {
            ans.append(arr.get(i));
            if (i != 0)
                ans.append(' ');
        }
        return ans.toString();
    }
}

参考代码
class Solution {//使用语言特性
    public String reverseWords(String s) {
        // 除去开头和末尾的空白字符
        s = s.trim();
        // 正则匹配连续的空白字符作为分隔符分割
        List wordList = Arrays.asList(s.split("\\s+"));
        Collections.reverse(wordList);
        return String.join(" ", wordList);
    }
}

链接: 答案解析来源

你可能感兴趣的:(LeetCode-翻转字符串里的单词)