首页 > 代码库 > 38. Count and Say
38. Count and Say
The count-and-say sequence is the sequence of integers with the first five terms as following:
1. 12. 113. 214. 12115. 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 term of the count-and-say sequence.
Note: Each term of the sequence of integers will be represented as a string.
Example 1:
Input: 1Output: "1"
Example 2:
Input: 4Output: "1211"
递归读取前面的数。注意读取时边界的问题
class Solution {public: string cv(int num) { string t = ""; while(num > 0) { t += (char)(num % 10 + ‘0‘); num /= 10; } reverse(t.begin(), t.end()); return t; } string countAndSay(int n) { if (n == 1) return "1"; else { string k = countAndSay(n - 1); string tmp(""); int len = k.length(); if (len == 1) return "11"; int num = 1; for (int i = 1; i < k.length(); ++i) { if(k[i] == k[i - 1]) { num++; if (i == k.length() - 1) { tmp += cv(num); tmp += k[i - 1]; } } else { tmp += cv(num); tmp += k[i - 1]; num = 1; } } if (num == 1) { tmp += cv(num); tmp += k[len - 1]; } //cout<<tmp<<"-"<<k<<endl; return tmp; } }};
数字转字符串还有 std::to_string(int n)这东西
38. Count and Say
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。