# Leetcode Magical String problem solution

In this Leetcode Magical String problem solution Given an integer n, return the largest palindromic integer that can be represented as the product of two n-digits integers. Since the answer can be very large, return it modulo 1337.

## Problem solution in Python.

```class Solution(object):
def magicalString(self, n):
"""
:type n: int
:rtype: int
"""
q = collections.deque()
cnt, num, res = 0, 1, 0
for _ in range(n):
q.append(num)
res += num == 1
cnt += 1
if cnt == q[0]:
q.popleft()
cnt = 0
return res
```

## Problem solution in Java.

```class Solution {
public int magicalString(int n) {

int[] A = new int[n+2];

int fast=1;
int slow=1;
int num= 1;

while(fast<=n){
A[fast++] = num;
if (A[slow++]==2){
A[fast++] = num;
}
num = 3-num;
}

int count=0;
for(int j=1;j<=n;j++){
if(A[j]==1)
count++;
}
return count;

}
}
```

## Problem solution in C++.

```class Solution {
public:
int magicalString(int n) {
if(n<=0)
return 0; // has 0 1's
if(n<=3)
return 1; // has one 1's
int count =0;
vector<int> _string;
_string.push_back(1);
_string.push_back(2);
_string.push_back(2);
int idx = 2;   // the last digit index , decides how many digits will be added to the end of the string
int digit = 1;
while(_string.size()<n){
if(_string[idx]==1){
_string.push_back(digit);
}
if(_string[idx]==2){
_string.push_back(digit);
_string.push_back(digit);
}
if(digit==1) digit = 2;
else digit =1;
idx++;
}
for(int x = 0; x<n; x++){
if(_string[x]==1)
count++;    // Counting only till the n specified in the question
}
return count;
}
};
```