首页 > 代码库 > 【Leetcode】Count and Say
【Leetcode】Count and Say
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.
-----------------------------------------------------------------------------------------------
以上含义描述不清,题目的实际意思是:
n = 0: 1
n = 1: 11 (前一个是1个1)
n = 2: 21 (前一个是2个1)
n = 3: 1211 (前一个是1个2,1个1)
n = 4: 111221 (前一个是1个1,1个2,2个1)
....
所以是一个递推关系,按规则模拟即可。
1 class Solution { 2 public: 3 string countAndSay(int n) { 4 string result("1"); 5 for (int i = 1; i < n; ++i) { 6 stringstream ss; 7 int j = 0, N = result.size(); 8 while (j < N) { 9 int c = 1; 10 while (j + 1 < N && result[j] == result[j + 1]) { 11 ++c; 12 ++j; 13 } 14 ss << c << result[j]; 15 ++j; 16 } 17 ss >> result; 18 } 19 return result; 20 } 21 };
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。