本文共 1121 字,大约阅读时间需要 3 分钟。
问题:
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.
解答:没啥意思,数数吧。m_itoa()是自己实现的一个一位的itoa
代码:
class Solution {public: string countAndSay(int n) { if(n == 0) return ""; string s = "1"; for(int i = 1; i < n; i++) { s = next(s); } return s; } string next(string ls) { int count; char target; string temp; count = 1; target = ls[0]; string s = ""; for(int i = 1; i < ls.size(); i++) { if(target == ls[i]) ++count; else { temp = m_itoa(count); s += temp; s += target; count = 1; target = ls[i]; } } temp = m_itoa(count); s += temp; s += target; return s; } string m_itoa(int count) { string re = ""; stack st; char s[2]; while(count) { st.push(count%10); count /= 10; } while(!st.empty()) { s[0] = st.top() + '0'; s[1] = '\0'; re.append(s); st.pop(); } return re; }};
转载地址:http://lktsi.baihongyu.com/