Home > Software design >  String Palindrome
String Palindrome

Time:12-06

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;
}

CodePudding user response:

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()

  • Related