当前位置: 首页 > news >正文

7-12 最长对称子串(PTA)

对给定的字符串,本题要求你输出最长对称子串的长度。例如,给定Is PAT&TAP symmetric?,最长对称子串为s PAT&TAP s,于是你应该输出11。

输入格式:

输入在一行中给出长度不超过1000的非空字符串。

输出格式:

在一行中输出最长对称子串的长度。

输入样例:

Is PAT&TAP symmetric?

输出样例:

11

代码:

#include<iostream>
#include<string>
#include<algorithm>
using namespace std;

int duiChengZiFuChuanlength(string zifuchuan,int left,int right)   //1.先求出这道题目所要求的对成字符串。 
{
    while(left>=0&&right<zifuchuan.length()&&zifuchuan[left]==zifuchuan[right])
    {
        left--;
        right++;
    }
    return right-left-1;   //经过循环后,此时的left实为左边界+1,而right为右边界+1,按原数正常求字符段长为right-left+1, 
}                          //而这里因为left和right的变化,所以是为(right+1)-(letf-1)+1=right-left+1。 

int duiChengZiFuChuanMaxLength(string zifuchuan)   //2.再从所有对称字符串中用两种计算方式求出最大对称字符串 
{
    if(zifuchuan.length()==0)  return 0;   //若长度为0,则直接返还0。 
    int maxLen=0;   //初始化最长对称字符串为0,方便后面求最长对称字符串。 
    for(int i=0;i<zifuchuan.length();i++)   //遍历所有的位置的字符串。 
    {
        int  len1=duiChengZiFuChuanlength(zifuchuan,i,i);   //一种是同一个字符开始查找。 
        int  len2=duiChengZiFuChuanlength(zifuchuan,i,i+1);   //另一种是初定一个字符和下一个字符开始查找。 
        int  len=max(len1,len2);   //存储单个i指定查找后的最大对称字符串。 
        maxLen=max(maxLen,len);    //所有对称字符串对比得出最大对称字符串。 
    }
    return maxLen;   
}

int main()
{
    string zifuchuan;              //3.再定义一个所需要输入的字符串,随后放入所写的函数后求出最大对称字符串。 
    getline(cin,zifuchuan);
    int x=duiChengZiFuChuanMaxLength(zifuchuan);
    cout<<x<<endl;
    return 0;
}

http://www.dtcms.com/a/113663.html

相关文章:

  • verilog状态机思想编程流水灯
  • VMware 安装 Ubuntu 全流程实战指南:从零搭建到深度优化
  • 医药档案区块链系统
  • 强引用,弱引用,软引用,虚引用,自旋锁,读写锁
  • 基于springboot放松音乐在线播放系统(源码+lw+部署文档+讲解),源码可白嫖!
  • Linux驱动-①电容屏触摸屏②音频③CAN通信
  • client-go如何监听自定义资源
  • 2011-2019年各省地方财政资源勘探电力信息等事务支出数据
  • Jetpack Compose 自定义标题栏终极指南:从基础到高级实战
  • 蓝桥杯2024年第十五届省赛真题-宝石组合
  • BGP路由协议之特殊配置
  • Linux内核slab分配器
  • Linux 系统安装与优化全攻略:打造高效开发环境
  • Airflow量化入门系列:第四章 A股数据处理与存储优化
  • 浅谈StarRocks 常见问题解析
  • (5)模拟后——Leonardo的可视化操作
  • 探秘叁仟智盒设备:智慧城市的智能枢纽
  • Django4.0 快速集成jwt
  • ASP.NET Core Web API 参数传递方式
  • NLP简介及其发展历史
  • docker stack常用命令
  • C#结构体(Struct)深度解析:轻量数据容器与游戏开发应用 (Day 20)
  • pinia-plugin-persist、vuex
  • Spring Boot项目连接MySQL数据库及CRUD操作示例
  • Java Timer:老派但好用的“定时任务小闹钟“
  • 【Linux】进程间通信、匿名管道、进程池
  • 将OpenFOAM中的lduMatrix数据转换为CSC稀疏矩阵格式
  • 混合编程的架构
  • Java EE期末总结(第三章)
  • Leedcode刷题 | 回溯算法小总结01