LeetCode 38 Count and Say

来源:互联网 发布:南风知我意琰阙 编辑:程序博客网 时间:2024/05/29 02:58

题意:

定义一种迭代,1, 11, 21, 1211, 111221, ...,比如1211 -> 111221表示1211从左往右读为1个1、1个2、2个1,求迭代n轮的结果。


思路:

用string暴力模拟迭代过程,不推荐迭代计数x个y这种方式,因为x>9的时候会变成2个数字,用string更好处理。


代码:

class Solution {public:    string countAndSay(int n) {        string s = "1";        while (--n) {            stringstream ss;            int cnt = 1;            for (int i = 1; i < s.size(); ++i) {                if (s[i] != s[i - 1]) {                    ss << cnt << s[i - 1];                    cnt = 1;                } else {                    ++cnt;                }            }            ss << cnt << s[s.size() - 1];            s = ss.str();        }        return s;    }};


原创粉丝点击