题目来源
题目的意思比较难以解释,还是自己看题目去吧。
没想明白应该怎么做。然后就看答案了。
这个解法比较巧妙,利用到了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');
}
};