摘要:接下來要想提速,就在正則表達式和字符串拼接這兩部分。在這篇文章,作者拼接了個英文字母次,速度差別達到了上萬倍。還有一個,與的區別就是是線程安全的,是線程不安全的。
Reverse Words in a String https://oj.leetcode.com/problems/reverse-words-in-a-string/
Given an input string, reverse the string word by word.
For example, Given s = "the sky is blue", return "blue is sky the".
剛開始的想法就是用Java的split函數來把詞分到數組里,然后反向加一下,剛開始是這么寫的
public class Solution { public String reverseWords(String s) { String result = ""; String[] words = s.trim().split(" "); String space = ""; for(int i = words.length - 1; i >= 0; i--){ result += space; result +=words[i]; space = " "; } return result; } }
后來發現題目還會有多個空格,split函數你傳給它一個空格它就只按一個空格來分割,不像python等語言如果你默認不給參數就會按照空白來分,包括多個空格,制表符等。
經過查資料還知道split函數的參數其實是正則表達式,這樣就能用正則來識別多個空格了,然后我將s+傳給split函數來匹配任意空格,然后一提交,發現超時了,系統返回的信息提示上次處理的數據的長度竟然有50000。
然后我將split的參數改成[ ]+,只匹配多個空格,還是超時。接下來要想提速,就在正則表達式和字符串拼接這兩部分。我先試了字符串拼接,用StringBuffer而不是String的+=來拼接,然后就順利通過了,代碼如下。
public class Solution { public String reverseWords(String s) { String[] words = s.trim().split("[ ]+"); String space = ""; StringBuffer sb = new StringBuffer(); for(int i = words.length - 1; i >= 0; i--){ sb.append(space); sb.append(words[i]); space = " "; } return sb.toString(); } }
看來以后用字符串拼接還是用StringBuffer好,省時間太多了,因為String的+=拼接會一直創建新的String對象,StringBuffer就不需要重新創建對象。在這篇文章http://blog.csdn.net/yirentianran/article/details/2871417,作者拼接了26個英文字母5000次,速度差別達到了上萬倍。
還有一個StringBuilder,StringBuilder與StringBuffer的區別就是StringBuffer是線程安全的,StringBuilder是線程不安全的。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/64077.html
摘要:分布式的管理和當我在談論架構時我在談啥狀態碼詳解無狀態協議和請求支持哪些方法分層協議棧有哪些數據結構運用場景說說你常用的命令為什么要有包裝類面向對象的特征是啥是啥有什么好處系統設計工程在線診斷系統設計與實現索引背后的數據結構及算法原理軟技能 HTTP 【HTTP】分布式session的管理 【HTTP】Cookie和Session 【HTTP】當我在談論RestFul架構時我在談啥?...
摘要:有效三角形的個數雙指針最暴力的方法應該是三重循環枚舉三個數字。總結本題和三數之和很像,都是三個數加和為某一個值。所以我們可以使用歸并排序來解決這個問題。注意因為歸并排序需要遞歸,所以空間復雜度為 ...
摘要:關于遞歸這里提一兩點遞歸基本有這幾步遞歸的模板,終止條件,遞歸調用,邏輯處理。 ?作者簡介:大家好,我是車神哥,府學路18號的車神? ?個人主頁:應無所住而生...
Problem A website domain like discuss.leetcode.com consists of various subdomains. At the top level, we have com, at the next level, we have leetcode.com, and at the lowest level, discuss.leetcode.com...
摘要:強烈推薦上值得前端學習的數據結構與算法項目,包含圖的演示過程與視頻講解。該倉庫包含了多種基于的算法與數據結構,提供進一步閱讀的解釋和鏈接。數據結構和算法必知必會的個代碼實現。 showImg(https://segmentfault.com/img/bVbvpYZ); 前言 算法為王。想學好前端,先練好內功,內功不行,就算招式練的再花哨,終究成不了高手;只有內功深厚者,前端之路才會走得...
摘要:解題思路這題就是最基礎的遞歸運算題目,兩個選擇,一個是偶數,一個是奇數,偶數直接除操作,奇數變成左右兩個偶數繼續操作選擇操作最小的,注意有一個用例是,解決方法有兩種,第一就是首先把的二次冪都干掉,代碼如下 ...
閱讀 2562·2023-04-25 18:13
閱讀 770·2021-11-22 12:10
閱讀 2970·2021-11-22 11:57
閱讀 2138·2021-11-19 11:26
閱讀 2164·2021-09-22 15:40
閱讀 1460·2021-09-03 10:28
閱讀 2704·2019-08-30 15:53
閱讀 1950·2019-08-30 15:44