π§KMP: Minimum Characters Required to Make a String Palindromic
Brute Force
The getPalindromeAt() is the same as the one used in the Longest Palindrome Substring solution.
Last updated
The getPalindromeAt() is the same as the one used in the Longest Palindrome Substring solution.
Last updated
int getMinRes(pair<int, int> palindrome, int size, int res) {
if(palindrome.first == 0)
res = min(res, size - palindrome.second - 1);
// if insertion at end was allowed then
// if(palindrome.second == size - 1)
// res = min(res, palindrome.first);
return res;
}
pair<int, int> getPalindromeAt(const string &A, int begin, int end) {
pair<int, int> res;
while(begin >= 0 && end < A.size()) {
if(A[begin] == A[end])
res.first = begin, res.second = end;
else
break;
begin--, end++;
}
return res;
}
int Solution::solve(string A) {
pair<int, int> palindrome;
int res = INT_MAX;
for(int i = 0; i < A.size(); i++) {
palindrome = getPalindromeAt(A, i, i);
res = getMinRes(palindrome, A.size(), res);
if(i + 1 < A.size()) {
palindrome = getPalindromeAt(A, i, i + 1);
res = getMinRes(palindrome, A.size(), res);
}
}
return res;
}