现在的位置: 首页 > 综合 > 正文

Count and Say — leetcode

2018年10月18日 ⁄ 综合 ⁄ 共 608字 ⁄ 字号 评论关闭

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.

算法在leetcde上实际执行时间为3ms。

class Solution {
public:
    string countAndSay(int n) {
        if (n < 1) return "";

        string result("1");
        while (--n) {
                stringstream stream;
                char last = result[0];
                int count = 1;
                for (int i=1; i<result.size(); i++) {
                        if (result[i] == last)
                                count++;
                        else {
                                stream << count << last;
                                last = result[i];
                                count = 1;
                        }
                }

                stream << count << last;
                result = stream.str();
        }
        return result;
    }
};

抱歉!评论已关闭.