一、 題目
題目說,如下的字符串:
1, 11, 21, 1211, 111221, ...
1讀成11(一個1)
11讀成21(兩個1)
21讀成(一個2一個1)
......
給一個整數,返回對應得語句。返回語句為一個字符串
二、 分析
題目的意思不是很明白,其實就是說第i+1個字符串是第i個字符串的讀法,第一字符串為 “1”
比如第四個字符串是1211,它的讀法是 1個1、1個2,2個1,因此第五個字符串是111221。第五個字符串的讀法是:3個1、2個2、1個1,因此第六個字符串是312211。
明白了題意,我們不難想到思路:
1、初始字符串為”1”,字符ch為 str[0],中間字符串為str2;
2、從1開始循環產生字符串直到n;
3、遍歷字符串,計數相連的相同字符,並產生新的字符串;
class Solution { public: string countAndSay(int n) { if(n == 0) return ""; string str = "1"; for(int i = 1; i < n; i++){ char ch = str[0]; string str2 = ""; int count = 1; for(int j=1;j0){ str2 = str2 + char(count + '0') + ch; count = 1; ch = str[j]; } } str2 = str2 + char(count + '0') + ch; str = str2; } return str; } };