首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >回文子串

回文子串

作者头像
喜欢ctrl的cxk
发布2019-11-08 10:35:51
3850
发布2019-11-08 10:35:51
举报
文章被收录于专栏:Don的成长史Don的成长史

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/weixin_42449444/article/details/102071563

题目描述:

给定一个字符串,你的任务是计算这个字符串中有多少个回文子串。

("回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串。)

具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被计为是不同的子串。

可用C++,Java,C#实现相关代码逻辑

输入描述:

输入一个字符串S 例如“aabcb”(1 <= |S| <= 50), |S|表示字符串S的长度。

输出描述:

符合条件的字符串有"a","a","aa","b","c","b","bcb" 所以答案:7。

输入样例:

aabcb

输出样例:

7

解题思路:

快手校招题。牛客网贴的标签是dp,不要跟我说什么dp?无脑暴力破解就完事啦,我赌它不会TLE,一提交代码还真AC。

AC代码:

#include <bits/stdc++.h>
using namespace std;
#define Up(i,a,b) for(int i = a; i <= b; i++)

bool fun(string s)   //判断是不是回文字符串
{
    string t = s;
    reverse(t.begin(),t.end());   //翻转字符串
    return s==t;
}

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0),cout.tie(0);
    string str;
    getline(cin,str);
    int len = str.length();
    int cnt = 0;   //回文子串的个数
    Up(i,0,len-1)      //暴力破解就完事啦,看会不会TLE
    {
        Up(j,i+1,len)
        {
            string t = str.substr(i,j-i);
            // cout << t << endl;
            if(fun(t)) cnt++;
        }
    }
    cout << cnt << endl;
    return 0;
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-10-04 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目描述:
  • 输入描述:
  • 输出描述:
  • 输入样例:
  • 输出样例:
  • 解题思路:
  • AC代码:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档