【LeetCode】Reverse Words in a String III 解题报告
2017-04-12 11:48
555 查看
【LeetCode】Reverse Words in a String III 解题报告
标签(空格分隔): LeetCode题目地址:https://leetcode.com/problems/reverse-words-in-a-string-iii/#/description
题目描述:
Given a string, you need to reverse the order of characters in each word within a sentence while still preserving whitespace and initial word order.Example:
Input: "Let's take LeetCode contest" Output: "s'teL ekat edoCteeL tsetnoc"
Note:
In the string, each word is separated by single space and there will not be any extra space in the string.
Ways
很简单的题,直接分割开每个单词,然后把单词翻转再拼接就好了。我的第一种做法:public class Solution { public String reverseWords(String s) { String[] words = s.split(" "); StringBuilder ans = new StringBuilder(); boolean isFirst = true; for(String word : words){ StringBuilder temp = new StringBuilder(word); word = temp.reverse().toString(); if(isFirst){ ans.append(word); isFirst = false; }else{ ans.append(" " + word); } } return ans.toString(); } }
看着时间有点长 14 ms,于是没用StringBuilder,方法如下
public class Solution { public String reverseWords(String s) { String[] words = s.split(" "); StringBuilder ans = new StringBuilder(); boolean isFirst = true; for(String word : words){ word= reverse(word); if(isFirst){ ans.append(word); isFirst = false; }else{ ans.append(" " + word); } } return ans.toString(); } public String reverse(String s){ char[] chars = s.toCharArray(); for(int i = 0; i < chars.length / 2; i++){ char temp = chars[i]; chars[i] = chars[chars.length - 1 - i]; chars[chars.length - 1 - i] = temp; } return new String(chars); } }
时间变为 13 ms,还想继续压缩时间。全部用数组实现:
public class Solution { public String reverseWords(String s) { String[] words = s.split(" "); char[] ans = new char[s.length()]; boolean isFirst = true; int i = 0; for (String word : words) { char[] chars = word.toCharArray(); for (int j = 0; j < chars.length / 2; j++) { char temp = chars[j]; chars[j] = chars[chars.length - 1 - j]; chars[chars.length - 1 - j] = temp; } System.arraycopy(chars, 0, ans, i, chars.length); i += chars.length; if (i != ans.length) { ans[i] = ' '; } i++; } return new String(ans); } }
这个时间却变成了16ms,已经无语。嗯。就这样吧。
Date
2017 年 4 月 12 日相关文章推荐
- leetcode解题报告(25):Reverse Words in a String III
- [leetcode]151. Reverse Words in a String@Java解题报告
- leetcode解题报告 Reverse Words in a String
- LeetCode 解题报告 Reverse Words in a String
- LeetCode解题报告—— Linked List Cycle II & Reverse Words in a String & Fraction to Recurring Decimal
- 【LeetCode】Reverse Words in a String 解题报告
- leetcode解题方案--151--Reverse Words in a String
- [LeetCode OJ] Reverse Words in a String 解题报告
- [Leetcode] 557. Reverse Words in a String III 解题报告
- leetcode 557 Reverse Words in a String III C++
- Leetcode——557. Reverse Words in a String III
- leetcode 557 Reverse Words in a String III
- LeetCode之Reverse Words in a String III
- leetcode 557.:Reverse Words in a String III
- leetCode---Reverse Words in a String III
- Leetcode557. Reverse Words in a String III
- 【LeetCode】557 Reverse Words in a String III
- leetcode557. Reverse Words in a String III
- Leetcode学习(6)—— Reverse Words in a String III
- Reverse Words in a String III(leetcode)