zoukankan      html  css  js  c++  java
  • C语言编程练习12:回文串

    题目描述

    现在给你一个字符串S,请你计算S中有多少连续子串是回文串。

    输入

    输入包含多组测试数据。每组输入是一个非空字符串,长度不超过5000。

    输出

    对于每组输入,输出回文子串的个数。

    样例输入 Copy

    aba
    aa

    样例输出 Copy

    4
    3
    #include <bits/stdc++.h>
    using namespace std;
    int main()
    {
        char s[5020];
        int i,j,l;
        while(cin>>s)
        {
            l=strlen(s);
            int k=0;//回文串的个数
            for(i=0;i<l;i++)//遍历字符串
            {
                for(j=0;i-j>=0&&i+j<l;j++)//每个字符都是一个回文串,然后判断当前字符的前一个和后一个字符是否相等,若相等个数k++
                {
                    if(s[i-j]==s[i+j])
                    {
                        k++;
                    }
                    else
                        break;
                }
                if(s[i]!=s[i+1])continue;//判断当前字符是否与下一个字符相等,不等则跳转下一个循环
                for(j=0;i-j>=0&&i+1+j<l;j++)   //相等则判断下一个的字符的前一个字符与后一个字符是否相等,若相等个数k++
                {
                    if(s[i-j]==s[i+1+j])
                        k++;
                    else
                        break;
                }
            }
            cout<<k<<endl;//输出个数k;
        }
        return 0;
    }
    
  • 相关阅读:
    洛谷P4547 [THUWC2017]随机二分图
    洛谷P4590 [TJOI2018]游园会
    洛谷P4099 [HEOI2013]SAO
    #4719. 内凸包
    #1612. 天平(scales)
    #3164. 「CEOI2019」立方填词
    #4728. 问题求解
    #2754. Count(count)
    sa模板
    bzoj 2553: [BeiJing2011]禁忌
  • 原文地址:https://www.cnblogs.com/FantasticDoubleFish/p/14314915.html
Copyright © 2011-2022 走看看