用dfs查找一个字符串中的回文字符串

#include<bits/stdc++.h>
#define ll long long
using namespace std;
int dfs(string s,int le,int ri)//定义dfs函数
{
    int res=0;
    while(le>=0&&ri<s.length()&&s.at(le)==s.at(ri))
    {//从中间开始向两边判断,每个回文子串都加和,包括单个字符
        le--;
        ri++;
        res++;
    }
    return res;
}
int counts(string s)
{
    if(s.length()==0)
        return 0;
    int l=s.length();
    int res=0;
    for(int i=0; i<l; i++)
    {
        res+=dfs(s,i,i);//奇数子串
        res+=dfs(s,i,i+1);//偶数子串
    }
    return res;
};
int  main( )
{
    string s;
    cin>>s;
    cout<<counts(s)<<endl;
    return 0;
}

猜你喜欢

转载自www.cnblogs.com/SyrupWRLD999/p/12902679.html