bool isPalindrome(string s) {
int lenght = s.size();
bool i_is_char;
bool j_is_char;
bool i_is_num;
bool j_is_num;
int i = 0;
int j = lenght - 1;
while(i <= j)
{
i_is_char = (s[i] >= 'a' & s[i] <= 'z') | (s[i] >= 'A' & s[i] <= 'Z');
j_is_char = (s[j] >= 'a' & s[j] <= 'z') | (s[j] >= 'A' & s[j] <= 'Z');
i_is_num = s[i] <= '9' & s[i] >= '0';
j_is_num = s[j] <= '9' & s[j] >= '0';
if(!(i_is_char | i_is_num))
{
i++;
continue;
}
else if(!(j_is_char | j_is_num))
{
j--;
continue;
}
else
{
if(s[i] == s[j])
{
i++;
j--;
}
else if ( abs(s[i] - s[j]) == 32 & i_is_char & j_is_char)
{
i++;
j--;
}
else
return false;
}
}
return true;
}