Search code examples
c++stringrecursionpalindrome

String Palindrome


When am trying to run this code, am getting the opposite output. Please let me know, what am doing wrong...

#include<bits/stdc++.h>
using namespace std;

bool ps(string s,int l, int r){
    if(l>=r) 
        return true;
    if(s[l]!=s[r])
        return false;
    return ps(s,++l,--r);
}
 
int main(){
    string str="naman";
    int s=str.size();
    bool b=ps(str,0,s);
    if(!b){
        cout<<"Not a plaindrome";
    }
    else{
        cout<<"A plaindrome";
    }
    return 0;
}

Solution

  • You are inputting the wrong starting value to ps. The line

    bool b=ps(str,0,s);
    

    should be

    bool b=ps(str,0,s - 1);
    

    as the last character in a string is at index string.size() - 1 not string.size()