日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

不满足作对(JZ2 替换空格(Java))

發布時間:2023/12/20 java 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 不满足作对(JZ2 替换空格(Java)) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

菜雞程序猿第一次寫博客
秋招結束后,處處不如意,為了更好的學習并記錄,遂開始試著寫寫博客
第一篇博客,獻給劍指offer

關于劍指offer題2(空格替換)的一些自己的看法
題目描述:請實現一個函數,將一個字符串中的每個空格替換成“%20”。例如,當字符串為We Are Happy.則經過替換之后的字符串為We%20Are%20Happy。

因為本人學的是Java,一看到題目,立馬想到String.replace()。
第一次提交的代碼:

public String replaceSpace(StringBuffer str) {return str.toString().replaceAll(" ", "%20");}

AC了,時間12ms,空間9800k

由于以前在LeetCode中做過題,感覺12ms時間好長啊,想要優化,心想自己實現會不會效果好點,遂自己實現并提交
第二次提交的代碼:

public String replaceSpace2(StringBuffer str) {StringBuilder res = new StringBuilder();for(int i = 0; i < str.length(); i++) {char c = str.charAt(i);if(c!=' ') {res.append(c);}else {res.append("%20");}}return res.toString();}

啊哈~同樣AC了,但是時間13ms,空間9824k,時間空間全大了,what 回事?
本著刨(jia)根(zhuang)問(xue)底(xi)的心態,alt+鼠標左鍵,源碼如下:

public String replaceAll(String regex, String replacement) {return Pattern.compile(regex).matcher(this).replaceAll(replacement);}

這。。。這是啥?繼續刨(jia)根(zhuang)問(xue)底(xi)。。。目測是通過正則表達式來進行替換的。。。。然后怎么個流程。。。。完全繞萌幣了。。。繞了半天找到了替換方法,此處不粘代碼了,發現和我代碼不同的地方主要是在charAt處,官方應用的String對象,我用的是StringBuilder

是不是有什么關系?
因此第3次自己實現,代碼如下:

public String replaceSpace3(StringBuffer str) {String s = str.toString();StringBuilder res = new StringBuilder();for(int i = 0; i < s.length(); i++) {char c = s.charAt(i);if(c != ' ') {res.append(c);}else {res.append("%20");}}return res.toString();}

提交,AC,時間12ms,空間9706k,雖然時間沒有優化,但是空間略微少了點。

思考:執行效率不是StringBuilder>StringBuffer>String 嗎?為啥這道題改成了String反而更快了呢?
分析:
1)通過對比,發現主要區別在charAt()方法上,StringBuffer在調用的是父類AbstractStringBuilder的方法,該方法在會先檢查下標是否越界,然后在進行返回


2)從線程安全方面看,StringBuffer是線程安全的,對應方法會進行加鎖,StringBuilder和String是非線程安全的,可能這也有關。

就這樣吧,也不知道分析的對不對,也不會進一步優化!

菜雞程序猿就是我,我就是菜雞程序猿!

總結

以上是生活随笔為你收集整理的不满足作对(JZ2 替换空格(Java))的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。