每日OJ题_牛客_JOR26最长回文子串_C++_Java

news2024/10/3 0:12:46

目录

牛客_OR26最长回文子串

题目解析

C++代码1

C++代码2

Java代码


牛客_OR26最长回文子串

最长回文子串_牛客题霸_牛客网

描述:

    对于长度为n的一个字符串A(仅包含数字,大小写英文字母),请设计一个高效算法,计算其中最长回文子串的长度。


题目解析

枚举所有的中心点,然后向两边扩散即可,也可用dp解决,回文串类型题目即解析:Offer必备算法21_回文串dp_六道力扣题详解(由易到难)-CSDN博客

C++代码1

dp解法代码:

class Solution {
    public:
    /**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param A string字符串
* @return int整型
*/
    int getLongestPalindrome(string A) {
        // dp[i][j]表示i位置为结尾,最外面的字符是j的回文串?
        // 暴力
        int sz = A.size();
        int ret = 1;
        for(int i = 0; i < sz; ++i)
        {
            int len = 1; // 前面的防止越界不加也过了
            if(i != 0 && i != sz - 1 && A[i - 1] == A[i + 1])
            {
                int left = i - 1, right = i + 1;
                while(left >= 0 && right < sz && A[left--] == A[right++])
                    len += 2;
            }
            // cout << len << endl;
            ret = max(ret, len);
            if(i != 0 && A[i - 1] == A[i])
            {
                len = 0;
                int left = i - 1, right = i;
                while(left >= 0 && right < sz && A[left--] == A[right++])
                    len += 2;
            }
            ret = max(ret, len);
            if(i != sz - 1 && A[i] == A[i + 1])
            {
                len = 0;
                int left = i, right = i + 1;
                while(left >= 0 && right < sz && A[left--] == A[right++])
                    len += 2;
            }
            ret = max(ret, len);
        }
        return ret;
    }
};

C++代码2

中心拓展解法代码:

class Solution
{
    public:
    int getLongestPalindrome(string s)
    {
        int ret = 1, n = s.size();
        for(int i = 1; i < n; i++)
        {
            // 当⻓度是奇数的时候
            int left = i - 1, right = i + 1;
            while(left >= 0 && right < n && s[left] == s[right])
            {
                left--;
                right++;
            }
            ret = max(ret, right - left - 1);
            // 当⻓度是偶数的时候
            left = i - 1, right = i;
            while(left >= 0 && right < n && s[left] == s[right])
            {
                left--;
                right++;
            }
            ret = max(ret, right - left - 1);
        }
        return ret;
    }
};

Java代码

中心拓展解法代码:

import java.util.*;
public class Solution
{
    public int getLongestPalindrome (String s)
    {
        // 中⼼扩展算法
        int n = s.length();
        int ret = 0;
        for(int i = 0; i < n; i++) // 枚举所有的中点
        {
            // 当⻓度为奇数的时候
            int left = i - 1, right = i + 1;
            while(left >= 0 && right < n && s.charAt(left) == s.charAt(right))
            {
                left--;
                right++;
            }
            ret = Math.max(ret, right - left - 1);
            // 当⻓度为偶数的时候
            left = i; right = i + 1;
            while(left >= 0 && right < n && s.charAt(left) == s.charAt(right))
            {
                left--;
                right++;
            }
            ret = Math.max(ret, right - left - 1);
        }
        return ret;
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2185268.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Redis: 持久化之RDB和AOF

概述 Redis 有一个高质量的课题&#xff1a;数据安全性与数据可靠性Redis 是一个内存型数据库&#xff0c;数据大部分都是存在内存里面当信息在内存中流通时&#xff0c;Redis 节点突然就故障挂掉当重新启动的时候&#xff0c;内存中的数据肯定是全部丢失了如果在这种情况下&a…

MySQL 中如何优化 DISTINCT 查询

一、引言 在 MySQL 数据库中&#xff0c;DISTINCT关键字用于查询结果集中去除重复的行。然而&#xff0c;使用DISTINCT可能会导致查询性能下降&#xff0c;特别是在处理大量数据时。本文将介绍一些优化 MySQL 中DISTINCT查询的方法。 二、理解 DISTINCT 查询的性能影响 &…

Oracle中TRUNC()函数详解

文章目录 前言一、TRUNC函数的语法二、主要用途三、测试用例总结 前言 在Oracle中&#xff0c;TRUNC函数用于截取或截断日期、时间或数值表达式的部分。它返回一个日期、时间或数值的截断版本&#xff0c;根据提供的格式进行截取。 一、TRUNC函数的语法 TRUNC(date) TRUNC(d…

2024/10/2

1 线代内积和外积 2 在 PyTorch 中&#xff0c;x.dot(torch.ones(3)) 是执行向量点积&#xff08;dot product&#xff09;操作的代码。假设 x 是一个一维张量&#xff08;向量&#xff09;&#xff0c;其形状是 (N,)&#xff0c;且 N 应该与 torch.ones(3) 的长度相匹配。具…

查找与排序-插入排序

排序算法可以分为内部排序和外部排序&#xff0c;内部排序是数据记录在内存中进行排序&#xff0c;而外部排序是因排序的数据很大&#xff0c;一次不能容纳全部的排序记录&#xff0c;在排序过程中需要访问外存。常见的内部排序算法有&#xff1a;插入排序、希尔排序、选择排序…

java基础应用-循环控制

1、使用while与自增运算符循环遍历数组 1.1 实例说明 本实例利用自增运算符结合while循环获取每个数组元素的值&#xff0c;然后把它们输出到控制台中。其中自增运算符控制索引变量的递增。程序运行结果如图1所示。 图1 实例运行结果 1.2 实现过程 创建ErgodicArray类&#…

企业网盘预算规划,了解2024年最新价格标准

2024年全球企业云存储市场将增15%&#xff0c;企业网盘收费多样&#xff0c;包括用户数量、存储容量定价及综合功能套餐。ZohoWorkDrive、DropboxBusiness、GoogleWorkspace为主流选择&#xff0c;价格因企业规模、功能需求而异&#xff0c;建议灵活选择套餐和长期合作计划。 一…

yub‘s Algorithmic Adventures_Day3

yub’s Algorithmic Adventures_Day3 有序数组的平方 link&#xff1a;977. 有序数组的平方 - 力扣&#xff08;LeetCode&#xff09; 非递减顺序 一个数列中的元素从左到右依次不减&#xff0c;或者说不降序排列. 比如&#xff1a;1233445&#xff0c;12345. 思路分析 如果…

CORE MVC 过滤器 (筛选器)《2》 TypeFilter、ServiceFilter

TypeFilter、ServiceFilter ServiceFilter vs TypeFilter ServiceFilter和TypeFilter都实现了IFilterFactory ServiceFilter需要对自定义的Filter进行注册&#xff0c;TypeFilter不需要 ServiceFilter的Filter生命周期源自于您如何注册&#xff08;全局、区域&#xff09;&…

vite中sass警告JS API过期

1.问题 在Vite创建项目中引入Sass弹出The legacy JS API is deprecated and will be removed in Dart Sass 2.0.0 - vite中sass警告JS API过期 The legacy JS API is deprecated and will be removed in Dart Sass 2.0.0警告提示表明你当前正在使用的 Dart Sass 版本中&#…

Python画图|渐变背景

Python画图在有些时候&#xff0c;需要使用渐变过度。 在matplotlib官网中&#xff0c;提供了一个为柱状图画渐变背景的案例&#xff0c;我们一同探索一番。 【1】官网教程 点开下述链接&#xff0c;直达官网教程&#xff1a; https://matplotlib.org/stable/gallery/lines…

【Bug】解决 Ubuntu 中 “error: Unable to Find Python3 Executable” 错误

解决 Ubuntu 中 “Unable to Find Python3 Executable” 错误 在 Ubuntu 系统上使用 Python 进行开发时&#xff0c;遇到找不到 python3 可执行文件的错误。 主要问题是无法正常打开终端&#xff08;原生与terminator&#xff09;&#xff0c;找不到python3&#xff0c;且无法…

基于muduo库函数实现protobuf协议的通信

文章目录 先定义具体的业务请求类型2. 实现服务端提供的服务protobuf_server.cppprotobuf_client.cpp 建议先去了解muduo库和protobuf协议&#xff1a; Protobuf库的使用Muduo库介绍及使用 先定义具体的业务请求类型 先使用protobuf库创建我们所要完成的业务请求类型&#xf…

域内用户名枚举 实验

1. 实验网络拓扑 kali: 192.168.72.128win2008: 192.168.135.129 192.168.72.139win7: 192.168.72.149win2012:(DC) 192.168.72.131 2. 简单原理 详细的报文分析在之前写过了&#xff0c;这里简单提一提。 利用的是Kerberos的AS阶段&#xff0c;AS_REP的回显不同&#xff0c…

迷宫中的最短路径:如何用 BFS 找到最近出口【算法模板】

如何通过广度优先搜索&#xff08;BFS&#xff09;求解迷宫问题 在这篇文章中&#xff0c;我们将学习如何使用 广度优先搜索&#xff08;BFS&#xff09; 解决一个典型的迷宫问题&#xff0c;具体是从迷宫的一个入口出发&#xff0c;找到最近的出口。我们将一步步分析 BFS 是如…

初识CyberBattleSim

现在许多企业都在使用AD域服务进行管理&#xff0c;我们现在通俗理解里面蕴含着许多重要资产。 对于这个东西有下列的描述: 1、攻击他能够获得用户权限 2、里面存在许多的计算机资产&#xff0c;当攻击者攻击其中的一台机器&#xff0c;可以通过某种手段在域中的环境横向移动…

golang rpc

RPC&#xff08;Remote Procedure Call&#xff09;远程过程调用&#xff0c;简单的理解是一个节点请求另一个节点提供的服务&#xff0c;对应rpc的是本地过程调用&#xff0c;函数调用是最常用的本地过程调用&#xff0c;将本地过程调用变成远程调用会面临着各种问题。 以两数…

第 21 章 一条记录的多幅面孔——事务的隔离级别与 MVCC

21.1 事前准备 CREATE TABLE hero ( number INT, NAME VARCHAR ( 100 ), country VARCHAR ( 100 ), PRIMARY KEY ( number ) ) ENGINE INNODB CHARSET utf8;INSERT INTO hero VALUES ( 1, 刘备, 蜀 );21.2 事务隔离级别 在保证事务隔离性的前提下&#xff0c;使用不同的隔…

【Burp入门第三十三篇】IP Rotate 插件实现IP轮换爆破

Burp Suite是一款功能强大的渗透测试工具,被广泛应用于Web应用程序的安全测试和漏洞挖掘中。 本专栏将结合实操及具体案例,带领读者入门、掌握这款漏洞挖掘利器 读者可订阅专栏:【Burp由入门到精通 |CSDN秋说】 文章目录 正文安装步骤使用步骤应用场景实战文章正文 在 Burp…

基于SpringBoot+Vue+MySQL的智能垃圾分类系统

系统展示 用户前台界面 管理员后台界面 系统背景 随着城市化进程的加速&#xff0c;垃圾问题日益凸显&#xff0c;不仅对环境造成污染&#xff0c;也给城市管理带来了巨大挑战。传统的垃圾分类方式不仅费时费力&#xff0c;而且手工操作容易出现错误&#xff0c;导致垃圾分类效…