Magical String LeetCode solution in C++
1class Solution {2public:3int magicalString(int n) {4string s = "122";5int sz = 3;6int start = 2, lastDig = 2;7while (sz < n) {8int cnt = s[start++] - '0';9int currDig = (lastDig == 2) ? 1 : 2;10for (int i = 0; i < cnt; i++) {11s.push_back('0' + currDig);12sz++;13}14lastDig = currDig;15}16int ans = 0;17for (int i = 0; i < n; i++) {18if (s[i] == '1') {19ans++;20}21}22return ans;23}24};