C++/38.整數遞增序列報數
阿新 • • 發佈:2019-01-07
先上題目
思路:這道題重點在於正確讀懂題目,最簡單理解是,給一個數,輸出一個字串。給的數是整數序列,這點很關鍵,序列!!!即第幾個數。分析示例的時候,其實就是說1->11,11->21,21->1211,1211->111221,這相當於一個演變過程,假設我要求第五個,就要從第一個開始演變到序列5。
不說廢話了,下面程式碼思路就是:用一個while()控制演變次數(序列N相對應
N-1次),for()對前一次結果字串進行逐個字元讀取,逐個字元演變。
說點丟人的話,這道題我做得非常差。我一開始先是掉入了整數序列的坑,一直在分析整數序列的值與每個結果字串的關係,後面重新閱讀題目才反應過來可以從第一個變換到想要的序列結果。後面做演變的時候沒有在while()裡面初始化temp,在外面初始化了temp,導致前面的字串不斷累加,錯誤輸出。而且一開始用的是C語言,在字串連線的時候,總是溢位,沒法確定字串長度,改了C++,後續更新下C語言怎麼做。class Solution { public: string countAndSay(int n) { int i; string temp,result; result="1"; while(--n){ //由原始經歷過演變的次數 temp=""; for(i=0;i<result.length();i++){ //for迴圈為一次完整演變過程 int count=1; while(result[i]==result[i+1]){ count++; i++; } temp+=to_string(count)+result[i]; } result=temp; } return result; } };