151 Reverse Words in a String 翻转字符串里的单词

给定一个字符串,翻转字符串中的每个单词。
例如,
给定 s = "the sky is blue",
返回 "blue is sky the"。
对于C程序员:请尝试用O(1) 时间复杂度的原地解法。
说明:
    什么构成一个词?
    一系列非空格字符组成一个词。
    输入字符串是否可以包含前导或尾随空格?
    是。但是,您的反转字符串不应包含前导或尾随空格。
    两个单词之间多空格怎么样?
    将它们缩小到反转字符串中的单个空格。
详见:https://leetcode.com/problems/reverse-words-in-a-string/description/

实现语言:Java

方法一:

public class Solution {
    public String reverseWords(String s) {
        String[] words = s.trim().split("\s+");
        StringBuilder result = new StringBuilder();
        for (int idx = words.length - 1; idx >= 0; idx--) {
            result.append(words[idx]+" ");
        }
        return result.toString().trim();
    }
}

方法二:

public class Solution {
    public String reverseWords(String str) {
        String[] words = str.trim().split(" +");
        Collections.reverse(Arrays.asList(words));
        return String.join(" ", words);
    }
}

 方法三:

public class Solution {
    public String reverseWords(String str) {
        String result = "";
        String[] words = str.trim().split(" ");
        Stack<String> stack = new Stack<>();
        for (String s : words) {
            if (s.length() > 0) {
                stack.push(s);
            }
        }
        while (!stack.isEmpty()) {
            result += (stack.pop() + (stack.size() > 0 ? " " : ""));
        }
        return result;
    }
}

参考:http://www.cnblogs.com/grandyang/p/4606676.html

原文地址:https://www.cnblogs.com/xidian2014/p/8727937.html