字符串回文

String Palindrome

当我尝试 运行 这段代码时,我得到了相反的输出。请告诉我,哪里做错了...

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

您在 ps 中输入了错误的起始值。行

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

应该是

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

因为字符串中的最后一个字符位于索引 string.size() - 1 而不是 string.size()