2
int first_diff(string s) {3
for (int i = 0; i < (s.size() + 1) / 2; ++i) {4
if (s[i] != s[s.size() - 1 - i]) {12
bool validPalindrome(string s) {13
int diff = first_diff(s);14
if (diff == -1 || (s.size() % 2 == 0 && diff + 1 == s.size() / 2)) {15
// abca. If we have pattern like this than we can delete one of the20
bool first_valid = true;21
for (int i = diff; i < (s.size() + 1) / 2; ++i) {22
if (s[i] != s[s.size() - 2 - i]) {28
bool second_valid = true;29
for (int i = diff; i < (s.size() + 1) / 2; ++i) {30
if (s[i + 1] != s[s.size() - 1 - i]) {35
return first_valid || second_valid;