LeetCode: 38. Count and Say

0509第2题

题目

The count-and-say sequence is the sequence of integers with the first five terms as following:

  1. 1
    
  2. 11
    
  3. 21
    
  4. 1211
    
  5. 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 where 1 ≤ n ≤ 30, generate the nth term of the count-and-say sequence.

Note: Each term of the sequence of integers will be represented as a string.

思路

一开始没想清楚它要干嘛(可能是困了),后面去看了大佬的题解,才发现噢,原来是计算每个字符出现的次数,并把次数和字符一起写成string。参考了大佬的code,如下~

class Solution {
public:
    string countAndSay(int n) {
        if(n==0) return "";
        string tmp="1";
        for(int i=0; i<n-1; i++){
            string cur="";
            for(int j=0; j<tmp.size(); j++){
                int count=1;
                while((j+1<tmp.size()) && (tmp[j]==tmp[j+1])){
                    count++;
                    j++;
                }
                cur += to_string(count) + tmp[j];
            }
            tmp = cur;
        }
        return tmp;   
    }
};

明天有组会,要分享下ICLR 2019的best paper。加油呢~

猜你喜欢

转载自blog.csdn.net/liveway6/article/details/89998527