π§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.
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;
}
Last updated