给定一个字符串,翻转字符串中的每个单词。
例如,
给定 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