Magical String

题目来源
题目的意思比较难以解释,还是自己看题目去吧。
没想明白应该怎么做。然后就看答案了。
这个解法比较巧妙,利用到了49 ^ 3 = 50, 50 ^ 3 = 49这么个特性。
但是需要用到O(n)的空间。大神还写了个logN空间的解法,懒得去看了…

class Solution {
public:
    int magicalString(int n) {
        string S = "122";
        int i = 2;
        while (S.size() < n)
            S += string(S[i++] - '0', S.back() ^ 3);
        return count(S.begin(), S.begin()+n, '1');
    }
};

你可能感兴趣的:(Magical String)