LeetCode Reverse Words in a String
2015-09-21 04:42
316 查看
原题链接在这里:https://leetcode.com/problems/reverse-words-in-a-string/
题目:
Given an input string, reverse the string word by word.
For example,
Given s = "
return "
题解:
把原有string s按照空格分开存入strArr中,再从strArr尾部开始一个一个加到StringBuikder中即可。
Note: 1.这里学习了几个新的API, string.split(" ")可以按照空格把原有string分开但若是有连续空格比如"a a"中间有两个空格,就会拆成[a, , a], 中间的空格会保留。但若是用string.splict("\\s+")也是按照空格分开,但是上面连续两个空格时就不会额外拆出一个空格。
2. 若是string开头有空格,如" a", string.splict("\\s+")拆出的array长度为2, 也会包含空的string, strArr 会像["","a"]. 所以要像Simplify Path在加到StringBuikder前判定strArr[i].length()是否为0.
3.最后会多加一个 空格 在sb中,所以最后要用sb.deleteCharAt(sb.length()-1)消掉最后一个空格。
Time Complexity: O(n). Space: O(n), n = strArr.length.
AC Java:
题目:
Given an input string, reverse the string word by word.
For example,
Given s = "
the sky is blue",
return "
blue is sky the".
题解:
把原有string s按照空格分开存入strArr中,再从strArr尾部开始一个一个加到StringBuikder中即可。
Note: 1.这里学习了几个新的API, string.split(" ")可以按照空格把原有string分开但若是有连续空格比如"a a"中间有两个空格,就会拆成[a, , a], 中间的空格会保留。但若是用string.splict("\\s+")也是按照空格分开,但是上面连续两个空格时就不会额外拆出一个空格。
2. 若是string开头有空格,如" a", string.splict("\\s+")拆出的array长度为2, 也会包含空的string, strArr 会像["","a"]. 所以要像Simplify Path在加到StringBuikder前判定strArr[i].length()是否为0.
3.最后会多加一个 空格 在sb中,所以最后要用sb.deleteCharAt(sb.length()-1)消掉最后一个空格。
Time Complexity: O(n). Space: O(n), n = strArr.length.
AC Java:
public class Solution { public String reverseWords(String s) { if(s == null || s.length() == 0){ return s; } String [] strArr = s.split("\\s+"); if(strArr.length == 0){ return ""; } StringBuilder sb = new StringBuilder(); for(int i = strArr.length-1; i>=0; i--){ if(strArr[i].length() == 0){ continue; } sb.append(strArr[i] + " "); } sb.deleteCharAt(sb.length()-1); return sb.toString(); } }
相关文章推荐
- LeetCode Simplify Path
- linux0.11下的中断机制分析
- Android:Activity生命周期
- Best Time to Buy and Sell Stock 解答
- Triangle 解答
- 排序算法总结(C++版)
- 【Linux探索之旅】第三部分测验题
- 【Linux探索之旅】第三部分测验题
- vim的常用命令
- 144. Binary Tree Preorder Traversal
- 指针数组和数组指针
- 决定放弃 Cocos Studio
- 【Linux探索之旅】第三部分第五课:延时执行,唯慢不破
- Less
- [LeetCode] Count Primes - 素数系列问题
- sass
- 【Linux探索之旅】第三部分第五课:延时执行,唯慢不破
- 145. Binary Tree Postorder Traversal
- abstract class和interface的区别
- win8 win10 安装msi 提示2502、2503的错误代码