Palindrome Index 1

 Given a string of lowercase letters in the range ascii[a-z], determine the index of a character that can be removed to make the string a palindrome. There may be more than one solution, but any will do. If the word is already a palindrome or there is no solution, return -1. Otherwise, return the index of a character to remove.



Example 1:

input : aaab

output:3

explanation: if we remove b than the string will be aaa which is palindrome ,b is in 3rd index.

Example 2:

input : baa

output:0

explanation: if we remove b than the string is aa which is palindrome , b is in 0th index


Example 3:

input : aaa

output:-1

explanation: it is a palindrome 



c++ implementation:

#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;


int main() {
  int t; cin>>t;
    while(t--) 
    {
        string s;
        cin>>s;
        string x;
        for(int i=s.length()-1;i>=0;i--)
            x=x+s[i];
        
        if(x==s)
        cout<<-1<<endl;
        else
        {
            int m=0;
            for(int i=s.length()-1;i>=0;i--)
            {
                if(s[i]!=s[m])
                {
                    if(s[i]==s[m+1])
                        cout<<m<<endl;
                    else
                        cout<<i<<endl;
                       
                       break;
                } 
                m++;
            }
            
        }

    }
    return 0;
}

Time Complexity: O(n)  ,where n is the length of the string



darkmode