成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

LeetCode 2

Corwien / 2166人閱讀

摘要:接下來要想提速,就在正則表達(dá)式和字符串拼接這兩部分。在這篇文章,作者拼接了個(gè)英文字母次,速度差別達(dá)到了上萬倍。還有一個(gè),與的區(qū)別就是是線程安全的,是線程不安全的。

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函數(shù)來把詞分到數(shù)組里,然后反向加一下,剛開始是這么寫的

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;
    }
}

后來發(fā)現(xiàn)題目還會(huì)有多個(gè)空格,split函數(shù)你傳給它一個(gè)空格它就只按一個(gè)空格來分割,不像python等語言如果你默認(rèn)不給參數(shù)就會(huì)按照空白來分,包括多個(gè)空格,制表符等。

經(jīng)過查資料還知道split函數(shù)的參數(shù)其實(shí)是正則表達(dá)式,這樣就能用正則來識(shí)別多個(gè)空格了,然后我將s+傳給split函數(shù)來匹配任意空格,然后一提交,發(fā)現(xiàn)超時(shí)了,系統(tǒng)返回的信息提示上次處理的數(shù)據(jù)的長度竟然有50000。

然后我將split的參數(shù)改成[ ]+,只匹配多個(gè)空格,還是超時(shí)。接下來要想提速,就在正則表達(dá)式和字符串拼接這兩部分。我先試了字符串拼接,用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好,省時(shí)間太多了,因?yàn)镾tring的+=拼接會(huì)一直創(chuàng)建新的String對(duì)象,StringBuffer就不需要重新創(chuàng)建對(duì)象。在這篇文章http://blog.csdn.net/yirentianran/article/details/2871417,作者拼接了26個(gè)英文字母5000次,速度差別達(dá)到了上萬倍。

還有一個(gè)StringBuilder,StringBuilder與StringBuffer的區(qū)別就是StringBuffer是線程安全的,StringBuilder是線程不安全的。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/64077.html

相關(guān)文章

  • 6-9月技術(shù)文章匯總

    摘要:分布式的管理和當(dāng)我在談?wù)摷軜?gòu)時(shí)我在談啥狀態(tài)碼詳解無狀態(tài)協(xié)議和請(qǐng)求支持哪些方法分層協(xié)議棧有哪些數(shù)據(jù)結(jié)構(gòu)運(yùn)用場景說說你常用的命令為什么要有包裝類面向?qū)ο蟮奶卣魇巧妒巧队惺裁春锰幭到y(tǒng)設(shè)計(jì)工程在線診斷系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)索引背后的數(shù)據(jù)結(jié)構(gòu)及算法原理軟技能 HTTP 【HTTP】分布式session的管理 【HTTP】Cookie和Session 【HTTP】當(dāng)我在談?wù)揜estFul架構(gòu)時(shí)我在談啥?...

    miya 評(píng)論0 收藏0
  • LeetCode 精選TOP面試題【51 ~ 100】

    摘要:有效三角形的個(gè)數(shù)雙指針最暴力的方法應(yīng)該是三重循環(huán)枚舉三個(gè)數(shù)字??偨Y(jié)本題和三數(shù)之和很像,都是三個(gè)數(shù)加和為某一個(gè)值。所以我們可以使用歸并排序來解決這個(gè)問題。注意因?yàn)闅w并排序需要遞歸,所以空間復(fù)雜度為 ...

    Clect 評(píng)論0 收藏0
  • LeetCode天梯>Day026 反轉(zhuǎn)鏈表(遞歸法+(迭代法)雙鏈表法) | 初級(jí)算法 | Py

    摘要:關(guān)于遞歸這里提一兩點(diǎn)遞歸基本有這幾步遞歸的模板,終止條件,遞歸調(diào)用,邏輯處理。 ?作者簡介:大家好,我是車神哥,府學(xué)路18號(hào)的車神? ?個(gè)人主頁:應(yīng)無所住而生...

    imingyu 評(píng)論0 收藏0
  • [LeetCode] 811. Subdomain Visit Count

    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...

    jzman 評(píng)論0 收藏0
  • 優(yōu)秀程序員都應(yīng)該學(xué)習(xí)的 GitHub 上開源的數(shù)據(jù)結(jié)構(gòu)與算法項(xiàng)目

    摘要:強(qiáng)烈推薦上值得前端學(xué)習(xí)的數(shù)據(jù)結(jié)構(gòu)與算法項(xiàng)目,包含圖的演示過程與視頻講解。該倉庫包含了多種基于的算法與數(shù)據(jù)結(jié)構(gòu),提供進(jìn)一步閱讀的解釋和鏈接。數(shù)據(jù)結(jié)構(gòu)和算法必知必會(huì)的個(gè)代碼實(shí)現(xiàn)。 showImg(https://segmentfault.com/img/bVbvpYZ); 前言 算法為王。想學(xué)好前端,先練好內(nèi)功,內(nèi)功不行,就算招式練的再花哨,終究成不了高手;只有內(nèi)功深厚者,前端之路才會(huì)走得...

    cheukyin 評(píng)論0 收藏0
  • LeetCode 397 整數(shù)替換[遞歸] HERODING的LeetCode之路

    摘要:解題思路這題就是最基礎(chǔ)的遞歸運(yùn)算題目,兩個(gè)選擇,一個(gè)是偶數(shù),一個(gè)是奇數(shù),偶數(shù)直接除操作,奇數(shù)變成左右兩個(gè)偶數(shù)繼續(xù)操作選擇操作最小的,注意有一個(gè)用例是,解決方法有兩種,第一就是首先把的二次冪都干掉,代碼如下 ...

    HtmlCssJs 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<