摘要:題目要求英文的題目有點(diǎn)繞口,所以去網(wǎng)上找了一下題目的意思。題目的核心邏輯在于將口語化的數(shù)數(shù)字轉(zhuǎn)化為字符串。
題目要求
The count-and-say sequence is the sequence of integers beginning as follows: 1, 11, 21, 1211, 111221, ... 1 is read off as "one 1" or 11. 11 is read off as "two 1s" or 21. 21 is read off as "one 2, then one 1" or 1211. Given an integer n, generate the nth sequence. Note: The sequence of integers will be represented as a string.
英文的題目有點(diǎn)繞口,所以去網(wǎng)上找了一下題目的意思。
題目的核心邏輯在于將口語化的數(shù)數(shù)字轉(zhuǎn)化為字符串。
例如
如果一串?dāng)?shù)字是1,則是1個(gè)1,對(duì)應(yīng)的字符串為11
如果一串?dāng)?shù)字是11,則是2個(gè)1,對(duì)應(yīng)的字符串為21
如果一串?dāng)?shù)字是1211,則是1個(gè)1,接著1個(gè)2,接著2個(gè)1,對(duì)應(yīng)的字符串為111221
題目中輸入n,則方法對(duì)第n-1個(gè)數(shù)數(shù)字結(jié)果再一次進(jìn)行數(shù)數(shù)字,并返回字符串
所以輸入1對(duì)應(yīng)1,輸入2則是對(duì)前一個(gè)1進(jìn)行數(shù)數(shù)字得到11(1個(gè)1),輸入3則是對(duì)11進(jìn)行數(shù)數(shù)字得到21(2個(gè)1),并以此類推下去
可以看出來,每一個(gè)n對(duì)應(yīng)的字符串是唯一的,要得到第n個(gè)結(jié)果就必須獲得第n-1個(gè)結(jié)果,直至最小值1
public String countAndSay(int n) { if(n==1){ return "1"; } StringBuilder s = new StringBuilder("1"); StringBuilder result = new StringBuilder(); for(int i = 1 ; i在這里要強(qiáng)調(diào)一下,一定要使用StringBuilder來存儲(chǔ)臨時(shí)的結(jié)果,具體原因可以去查一下String和StringBuilder的差別,以后有機(jī)會(huì)我在博客中詳細(xì)介紹一下
想要了解更多開發(fā)技術(shù),面試教程以及互聯(lián)網(wǎng)公司內(nèi)推,歡迎關(guān)注我的微信公眾號(hào)!將會(huì)不定期的發(fā)放福利哦~
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/66976.html