I have tested each and every test case and still getting wrong answer.
`#include
#include
using namespace std;
void palindrome(string s, int n)
{
if(s[0] == ‘0’)
{
while(s[0] == ‘0’)
{
s.erase(s.begin());
}
}
n = s.length();
if(n == 1)
{
if(s[0] == ‘9’)
{
cout << “11” << endl;
return;
}
else
{
s[0]++;
cout << s << endl;
return;
}
}
int count = 0;
int flag = 0;
for(int k = 0; k < n; ++k)
{
if(s[k] == ‘9’)
{
count++;
}
else break;
}
if(count == n) flag = 1;
if(flag)
{
flag = 0;
for(int k = 0; k < n; ++k)
{
s[k] = ‘0’;
}
s[0] = ‘1’;
s.insert(s.end(),1,‘1’);
cout << s << endl;
return;
}
int i, j;
i = (n / 2) - 1;
j = n - i - 1;
int mid = i + 1;
int x = i;
if(n % 2 !=0)
{
while(i >= 0 && s[i] == s[j])
i–, j++;
}
if(n % 2 == 0)
{
if(s[i] > s[j])
{
for(i, j; i >=0 && j < n; --i, ++j)
{
s[j] = s[i];
}
cout << s << endl;
}
else if(s[i] == s[j])
{
if(s[i] == '9')
{
int k = i;
while(s[k] == '9')
{
s[k] = '0';
k--;
}
s[k]++;
}
else s[i]++;
for(i, j; i >=0 && j < n; --i, ++j)
{
s[j] = s[i];
}
cout << s << endl;
}
else if(s[i] < s[j])
{
s[i]++;
for(i, j; i >=0 && j < n; --i, ++j)
{
s[j] = s[i];
}
cout << s << endl;
}
}
else if(n % 2 !=0)
{
if(s[i] > s[j])
{
//mirror(s, i , j , n);
for(i, j; i >=0 && j < n; --i, ++j)
{
s[j] = s[i];
}
cout << s << endl;
}
else if(s[i] == s[j])
{
if(x != i)
{
if(s[mid] == '9')
{
int k = mid;
while(s[k] == '9')
{
s[k] = '0';
k--;
}
s[k]++;
i = (n / 2) - 1;
j = n - i - 1;
}
else
s[mid]++;
}
else if(s[i + 1] == '9')
{
int k = i + 1;
while(s[k] == '9')
{
s[k] = '0';
k--;
}
s[k] += 1;
}
else
s[i + 1] += 1;
//mirror(s, i , j , n);
for(i, j; i >=0 && j < n; --i, ++j)
{
s[j] = s[i];
}
cout << s << endl;
}
else if(s[i] < s[j])
{
if(x != i)
{
if(s[mid] == '9')
{
int k = mid;
while(s[k] == '9')
{
s[k] = '0';
k--;
}
s[k]++;
i = (n / 2) - 1;
j = n - i - 1;
}
else
s[mid]++;
}
else if(s[i + 1] == '9')
{
int k = i + 1;
while(s[k] == '9')
{
s[k] = '0';
k--;
}
s[k]++;
}
else s[i + 1]++;
//mirror(s, i , j , n);
for(i, j; i >=0 && j < n; --i, ++j)
{
s[j] = s[i];
}
cout << s << endl;
}
}
}
int main(void)
{
int t;
cin >> t;
string s[t];
for(int i = 0; i < t; ++i)
{
cin >> s[i];
}
for(int i = 0; i < t; ++i)
{
palindrome(s[i], s[i].length());
}
return 0;
}`