bool isValid(const string& a) {
string subA = a;
while (subA.length() > 0) {
if (subA[0] == 'a') {
subA = subA.substr(1, subA.length()-1);
}
else if (subA[(subA.length()-1)] == 'a') {
subA = subA.substr(0, subA.length()-1);
}
else if ((subA[0] == 'b') && (subA[(subA.length()-1)] == 'b')) {
int cnt = 0;
while (subA.length() > 0) {
if ((subA[0] != 'b') || (subA[(subA.length()-1)] != 'b')) {
break;
}
subA = subA.substr(1, subA.length()-2);
cnt++;
}
FOR (i, cnt) {
string tmp = subA;
auto it = tmp.find("a");
if (it != string::npos) {
tmp.replace(it, 1, "");
}
else {
return false;
}
}
}
else {
return false;
}
}
return true;
}