本文共 1445 字,大约阅读时间需要 4 分钟。
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.
111221 统计相邻重复的字符个数,例如这里111有3个1重复相邻,输出31,22有两个2重复相邻,输出22,1只有一个1,输出11
/********************************** 日期:2015-01-27* 作者:SJF0115* 题目: 38.Count and Say* 网址:https://oj.leetcode.com/problems/count-and-say/* 结果:AC* 来源:LeetCode* 博客:**********************************/#includeusing namespace std;class Solution {public: string countAndSay(int n) { if(n <= 0){ return ""; }//if string str("1"); for(int i = 1;i < n;++i){ NextCountAndSay(str); }//for return str; }private: void NextCountAndSay(string& str){ int len = str.length(); string tmp = ""; for(int i = 0;i < len;++i){ int repeatCount = 1; // repeat char count while((i+1 < len) && (str[i] == str[i+1])){ ++repeatCount; ++i; }// tmp += to_string(repeatCount); tmp += str[i]; }//for str = tmp; }};int main(){ Solution solution; int n = 5; string result = solution.countAndSay(n); // 输出 cout< <
转载地址:http://omhtl.baihongyu.com/