class Solution {
public:
bool isValidchar(char c)
{
if(c>='a'&&c<='z') return true;
if(c>='A'&&c<='Z') return true;
if(c>='0'&&c<='9') return true;
else return false;
}
char lowercase(char c)
{
if(c>='A'&&c<='Z') return c-'A'+'a';
else return c;
}
bool isPalindrome(string s) {
int l=0;
int r=s.size()-1;
while(l<s.size()&&!isValidchar(s[l]))
l++;
while(r>=0&&!isValidchar(s[r]))
r--;
while(l<r)
{
if(lowercase(s[l])==lowercase(s[r]))
{
l++;
while(l<s.size()&&!isValidchar(s[l]))
l++;
r--;
while(r>0&&!isValidchar(s[r]))
r--;
}
else return false;
}
return true;
}
};
public:
bool isValidchar(char c)
{
if(c>='a'&&c<='z') return true;
if(c>='A'&&c<='Z') return true;
if(c>='0'&&c<='9') return true;
else return false;
}
char lowercase(char c)
{
if(c>='A'&&c<='Z') return c-'A'+'a';
else return c;
}
bool isPalindrome(string s) {
int l=0;
int r=s.size()-1;
while(l<s.size()&&!isValidchar(s[l]))
l++;
while(r>=0&&!isValidchar(s[r]))
r--;
while(l<r)
{
if(lowercase(s[l])==lowercase(s[r]))
{
l++;
while(l<s.size()&&!isValidchar(s[l]))
l++;
r--;
while(r>0&&!isValidchar(s[r]))
r--;
}
else return false;
}
return true;
}
};