[LeetCode 151] Reverse Words in a String
2015-04-01 08:19
585 查看
题目链接:reverse-words-in-a-string
import java.util.Stack; /** * * Given an input string, reverse the string word by word. * * For example, Given s = "the sky is blue", return "blue is sky the". * * Update (2015-02-12): For C programmers: Try to solve it in-place in O(1) * space. * * * Clarification: What constitutes a word? A sequence of non-space characters * constitutes a word. Could the input string contain leading or trailing * spaces? Yes. However, your reversed string should not contain leading or * trailing spaces. How about multiple spaces between two words? Reduce them to * a single space in the reversed string. * */ public class ReverseWordsInAString { //解法一 // 22 / 22 test cases passed. // Status: Accepted // Runtime: 410 ms // Submitted: 0 minutes ago //时间复杂度O(n) 空间复杂度O(n) static String reverseWords(String s) { String reverseString = ""; int i = 0; while (i < s.length()) { while (i < s.length() && s.charAt(i) == ' ') { i++; } int begin = i; while (i < s.length() && s.charAt(i) != ' ') { i++; } if (begin != i && reverseString.length() != 0) { reverseString = " " + reverseString; } reverseString = s.substring(begin, i) + reverseString; } return reverseString; } //解法二: 用StringBuilder快很多 // 22 / 22 test cases passed. // Status: Accepted // Runtime: 252 ms // Submitted: 0 minutes ago //时间复杂度O(n) 空间复杂度O(n) static String reverseWords1(String s) { StringBuilder sb = new StringBuilder(); Stack<String> stack = new Stack<String>(); int i = 0; while (i < s.length()) { while (i < s.length() && s.charAt(i) == ' ') ++i; int begin = i; while (i < s.length() && s.charAt(i) != ' ') ++i; if (begin != i && stack.size() != 0) stack.push(" "); stack.add(s.substring(begin, i)); } while (!stack.isEmpty()) sb.append(stack.pop()); return sb.toString(); } public static void main(String[] args) { System.out.println(reverseWords("the sky is blue")); } }
相关文章推荐
- Leetcode#151 Reverse Words in a String
- leetcode JAVA Reverse Words in a String 难度系数2-3?最新题151
- LeetCode(151)Reverse Words in a String
- 【LeetCode-面试算法经典-Java实现】【151-Reverse Words in a String(反转字符串中的单词)】
- LeetCode:151_Reverse Words in a String | 字符串中单词的逆反 | Medium
- leetcode[151]:Reverse Words in a String
- leetcode 151: Reverse Words in a String
- Leetcode 151 Reverse Words in a String
- leetcode JAVA Reverse Words in a String 难度系数2-3?最新题151
- leetcode[151]Reverse Words in a String
- LeetCode: Reverse Words in a String [151]
- Reverse Words in a String - LeetCode 151
- Java for LeetCode 151 Reverse Words in a String
- LeetCode151:Reverse Words in a String
- leetcode-151 Reverse Words in a String
- Leetcode 151:Reverse Words in a String
- [leetcode 151]Reverse Words in a String
- LeetCode(151) Reverse Words in a String
- leetcode 151 —— Reverse Words in a String
- [leetcode151] Reverse Words in a String