解题思想:首先将字符串构建出来,然后进行遍历即可
class Solution(object):
def magicalString(self, n):
"""
:type n: int
:rtype: int
"""
temp = '122'
num = 1
i = 2
if n>3:
while True:
temp = temp + int(temp[i])*str(num)
if num ==1:
num = 2
else:
num = 1
if len(temp)>n:
break
i = i+1
count = 0
for i in range(n):
if temp[i] == '1':
count +=1
return count
class Solution {
public:
int magicalString(int n) {
std::string temp = "122";
int num = 1;
int i = 2;
if (n > 3) {
while (true) {
for (int j = 0; j < temp[i] - '0'; ++j) {
temp += std::to_string(num);
}
num = (num == 1) ? 2 : 1;
if (temp.length() > n) {
break;
}
i++;
}
}
int count = 0;
for (int i = 0; i < n; i++) {
if (temp[i] == '1') {
count++;
}
}
return count;
}
};