481. 神奇字符串
思路:本题主要是找规律,仔细观察字符串s会发现,它的1和2是交替出现的,规律是从s[2]开始发现。当字符串s="122"时,从s[2]开始往字符串后加s[2]-'0’个数字t(t是1和2交替出现)
class Solution {
public:
int magicalString(int n) {
int ans=1;//记录1的个数
int lens=3;//记录当前字符串s的长度
//当前字符串s="122"
string s="122";
int t=2;
//从s[2]开始往字符串后加s[2]-'0'个数字t
for(int i=2;;i++){
//实现1和2的交替出现
t=3-t;
//往字符串后加s[i]-'0'个数字t
for(int j=0;j<s[i]-'0';j++){
//当s的字符串长度>n时,结束
if(lens>=n) break;
s.push_back(t+'0');
lens++;
if(t==1) ans++;
}
if(lens>=n) break;
}
return ans;
}
};