1. 程式人生 > 其它 >LeetCode刷題15--外觀數列(普通迴圈方法實現)

LeetCode刷題15--外觀數列(普通迴圈方法實現)

技術標籤:刷題!!!

題目描述

給定一個正整數 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.若不相同,那麼記錄前面相同的值,表示為:幾個幾,以此類推。