1、前三位数字比较容易得出,可以直接写出来,方便后续的推算
2、使用双指针,一个用来指示当前字符串末位,另一个来指示相同字符个数
3、还需要进行1和2的切换,每次前一个指针移动一位,则1和2需要切换一次
class Solution {
public int magicalString(int n) {
if(n<=3)return 1;
String s = "1";
int i = 2;
int num = 1;
while(s.length()<n){
for(int j=0;j<s.charAt(i)-'0';j++)s += num;
num = 3 - num;
i++;
}
int ans = 0;
for(i=0;i<s.length();i++){
if(s.charAt(i)=='1')ans++;
}
return ans;
}
}