LeetCodeOJ. Count and Say

来源:互联网 发布:做招聘广告的软件 编辑:程序博客网 时间:2024/06/03 05:21

试题请参见: https://oj.leetcode.com/problems/count-and-say/

题目概述

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.

解题思路

简单的模拟题, 在当前位"向后看", 是否有与当前位相同的连续数字.
如果有, 则计数. 计数完成后, 将下标移动至下一个(不同的)数字.

源代码

class Solution {public:    std::string countAndSay(int n) {        std::string previous = "1";                for ( int i = 1; i < n; ++ i ) {            std::string current;            size_t step = 1;                        for ( size_t j = 0; j < previous.size(); j += step ) {                char currentDigit = previous.at(j);                step = 1;                for ( size_t k = j + 1; k < previous.size() && previous.at(k) == previous.at(j); ++ k ) {                    ++ step;                }                current += static_cast<char>(step + '0');                current += currentDigit;            }            previous = current;        }        return previous;    }};


0 0
原创粉丝点击