LeetCode刷題15--外觀數列(普通迴圈方法實現)
阿新 • • 發佈:2021-02-17
技術標籤:刷題!!!
題目描述
給定一個正整數 n ,輸出外觀數列的第 n 項。
外觀數列是一個整數序列,從數字 1 開始,序列中的每一項都是對前一項的描述。
前五項如下:
1 1
2 11
3 21
4 1211
5 111221
解題思路
string to_string(int n) { char str[32]={NULL,}; string s1; sprintf(str,"%d",n); s1=str; return s1; } string Shulie(int n) { string pre="1"; for(int j=1;j<n;j++) { string res; int temp=0; for(int i=0;i<pre.length();i++) { if(pre[i]!=pre[i+1]) { res+=to_string(i-temp+1)+pre[i]; temp=i+1; } } pre=res } return pre; } int main() { cout<<Shulie(5)<<endl; return 0; }
結果:
分析:
1.這裡的迴圈和遞迴很相似,迴圈次數和輸入的第幾個數列有關。
2.將前一組字串進行描述:如果字串中兩兩比較相同說明是同一字串。
3.若不相同,那麼記錄前面相同的值,表示為:幾個幾,以此類推。