华为机试HJ85:最长回文子串

简介: 华为机试HJ85:最长回文子串

题目描述:

给定一个仅包含小写字母的字符串,求它的最长回文子串的长度。

所谓回文串,指左右对称的字符串。

所谓子串,指一个字符串删掉其部分前缀和后缀(也可以不删)的字符串

(注意:记得加上while处理多个测试用例)

输入描述:

输入一个仅包含小写字母的字符串

输出描述:

返回最长回文子串的长度

示例:

输入:

cdabbacc


输出:

4

说明:

abba为最长的回文子串

解题思路:

这题用双循环解决。从头开始一层遍历,从后开始一层遍历;每个节点,令m=i,n=j,当某个位置str[m]与str[n]相等时进入while循环,m++、n--,同时用t记录回文一半长度的尺寸,若为回文则到中间位置,m会大于等于n;如果m和n相等,说明回文字符数为奇数,则回文长度为2*t+1,若m>n,说明回文字符数为偶数,则回文长度为2*t,同时更新max,max为最长回文长度。

测试代码:

#include <iostream>
#include <string>
#include <algorithm>
#include <vector>
using namespace std;
int main()
{
    string str;
    while(getline(cin,str))
    {
        int max=0;
        int size=str.size();
        for(int i=0;i<size;++i)
        {
            for(int j=str.size()-1;j>i;--j)
            {
                int m=i,n=j,t=0;
                while(str[m]==str[n])
                {
                    t++;
                    m++;
                    n--;
                    if(m>=n)
                    {
                        if(m==n)
                            t=2*t+1;
                        else
                            t=2*t;
                        if(t>max)
                            max=t;
                        break;
                    }
                }
            }
        }
        cout<<max<<endl;
    }
    return 0;
}


相关文章
|
存储 数据库 索引
Python新手常见问题一:列表、元组、集合、字典区别是什么?
本文针对Python编程新手常遇到的问题,详细阐述了列表(List)、元组(Tuple)、集合(Set)和字典(Dictionary)这四种数据结构的核心区别。列表是一种有序且可变的数据序列,允许元素重复;元组同样有序但不可变,其内容一旦创建就不能修改;集合是无序、不重复的元素集,强调唯一性,主要用于数学意义上的集合操作;而字典则是键值对的映射容器,其中键必须唯一,而值可以任意,它提供了一种通过键查找对应值的有效方式。通过对这些基本概念和特性的对比讲解,旨在帮助初学者更好地理解并运用这些数据类型来解决实际编程问题。
2122 1
|
存储 Kubernetes 调度
【K8S系列】Pod详解
【K8S系列】Pod详解
1016 0
|
存储 缓存 NoSQL
MySQL索引详解(一文搞懂)
索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。
49392 17
MySQL索引详解(一文搞懂)
|
12月前
|
Kubernetes Ubuntu Docker
从0开始搞K8S:使用Ubuntu进行安装(环境安装)
通过上述步骤,你已经在Ubuntu上成功搭建了一个基本的Kubernetes单节点集群。这只是开始,Kubernetes的世界广阔且深邃,接下来你可以尝试部署应用、了解Kubernetes的高级概念如Services、Deployments、Ingress等,以及探索如何利用Helm等工具进行应用管理,逐步提升你的Kubernetes技能树。记住,实践是最好的老师,不断实验与学习,你将逐渐掌握这一强大的容器编排技术。
1918 1
|
11月前
|
存储 Kubernetes 调度
深入理解Kubernetes中的Pod与Container
深入理解Kubernetes中的Pod与Container
622 0
anaconda下载安装,镜像源配置修改及虚拟环境的创建
这篇文章介绍了Anaconda的下载安装过程,包括Anaconda的简介、安装步骤、配置修改、创建虚拟环境以及一些常用命令的使用方法。文章还提供了如何修改conda的镜像源为国内镜像源以加速下载的步骤。
anaconda下载安装,镜像源配置修改及虚拟环境的创建
|
程序员 Go 网络架构
不看就落后了,Go 1.22 中更好的http router
不看就落后了,Go 1.22 中更好的http router
|
存储
数据结构:图文详解单链表的各种操作(头插法,尾插法,任意位置插入,删除节点,查询节点,求链表的长度,清空链表)
数据结构:图文详解单链表的各种操作(头插法,尾插法,任意位置插入,删除节点,查询节点,求链表的长度,清空链表)
1618 0
|
存储 前端开发 数据可视化
一文教会你 如何在Github中创建仓库?如何将多个项目放到一个仓库中管理?如何将本地项目上传到GitHub中?
这篇文章详细介绍了如何在GitHub上创建新仓库,以及如何将多个项目整合到一个仓库中进行管理。文章还提供了克隆仓库到本地、使用不同文件夹存放不同项目代码、以及将这些项目提交到远程服务器的步骤和方法。
一文教会你 如何在Github中创建仓库?如何将多个项目放到一个仓库中管理?如何将本地项目上传到GitHub中?
|
存储 网络协议 网络安全
RTMP协议详解及Wiresahrk抓包分析(一)
RTMP协议详解及Wiresahrk抓包分析
1072 2