Java實(shí)現(xiàn)LeetCode(報(bào)數(shù))
題目如下:

public String countAndSay(int n) {
if(n == 1){
return "1";
}
//遞歸調(diào)用,然后對(duì)字符串處理
String str = countAndSay(n-1) + "*";//為了str末尾的標(biāo)記,方便循環(huán)讀數(shù)
char[] c = str.toCharArray();
int count = 1;
StringBuilder s = new StringBuilder();
for(int i = 0; i < c.length - 1;i++){
if(c[i] == c[i+1]){
count++;//計(jì)數(shù)增加
}else{
//s.append(s);
s.append("" + count + c[i]);//上面的*標(biāo)記這里方便統(tǒng)一處理
count = 1;//初始化
}
}
return s.toString();
}
如果只數(shù)一次,那么結(jié)果就是“1”,這是特殊情況;如果要數(shù)的次數(shù)大于1就要進(jìn)入遞歸了。對(duì)于字符串我們自然無法對(duì)其中的字符進(jìn)行操作,所以需要把String轉(zhuǎn)換成char數(shù)組。然后在for循環(huán)外面定義了一個(gè)count變量,主要作用是當(dāng)出現(xiàn)連續(xù)的字符時(shí)進(jìn)行累加,最后轉(zhuǎn)換成字符,這是最關(guān)鍵的一環(huán)。
在做這個(gè)題目的過程中,剛開始用的是都是string,運(yùn)行時(shí)間是30ms左右。后來把for循環(huán)中的string變量換成了Stringbuffer,執(zhí)行用時(shí)驟降至8ms。這給我了很大的啟示,不能再無腦的使用String,在適當(dāng)?shù)臅r(shí)候使用合適的變量類型可以帶來很大的性能提升。
但是在提交之后,我看到了用時(shí)1ms的范例。簡(jiǎn)直是“投機(jī)取巧”的典型......因?yàn)闇y(cè)試用例就18個(gè),所以switch cash寫了18中情況。這真的是太聰明了?。。?/p>

到此這篇關(guān)于Java實(shí)現(xiàn)LeetCode(報(bào)數(shù))的文章就介紹到這了,更多相關(guān)Java實(shí)現(xiàn)報(bào)數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
java中應(yīng)用Stack進(jìn)行算術(shù)運(yùn)算的操作
這篇文章主要介紹了java中應(yīng)用Stack進(jìn)行算術(shù)運(yùn)算的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2021-03-03
Java?NIO實(shí)現(xiàn)聊天系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了Java?NIO實(shí)現(xiàn)聊天系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-11-11
SpringBoot2 整合MinIO中間件實(shí)現(xiàn)文件便捷管理功能
這篇文章主要介紹了SpringBoot2 整合MinIO中間件,實(shí)現(xiàn)文件便捷管理,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-07-07
Java 8 對(duì) ArrayList 元素進(jìn)行排序的操作方法
Java8提供了多種方式對(duì)ArrayList元素進(jìn)行排序,包括使用Collections.sort()方法、Collections.reverseOrder()實(shí)現(xiàn)降序排序、使用Lambda表達(dá)式進(jìn)行自定義排序、使用StreamAPI對(duì)ArrayList進(jìn)行排序及按對(duì)象屬性排序,本文通過示例代碼介紹的非常詳細(xì),感興趣的朋友一起看看吧2024-11-11
新手了解java 類,對(duì)象以及封裝基礎(chǔ)知識(shí)
JS是一門面向?qū)ο笳Z(yǔ)言,其對(duì)象是用prototype屬性來模擬的,本文介紹了如何封裝JS對(duì)象,具有一定的參考價(jià)值,下面跟著小編一起來看下吧,希望對(duì)你有所幫助2021-07-07
簡(jiǎn)單了解Java刪除字符replaceFirst原理及實(shí)例
這篇文章主要介紹了簡(jiǎn)單了解Java刪除字符replaceFirst原理及實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-05-05

