详见:https://leetcode.com/problems/magical-string/description/
C++:
方法一:
class Solution {
public:
int magicalString(int n) {
string s="122";
int i=2;
while(s.size()<n)
{
s+=string(s[i++]-'0',s.back()=='1'?'2':'1');
}
return count(s.begin(),s.begin()+n,'1');
}
};
方法二:
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');
}
};
参考:http://www.cnblogs.com/grandyang/p/6286540.html
https://blog.csdn.net/kakitgogogo/article/details/54864975