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

最长回文子串【Java实现】

题目描述

现有一个字符串s,求s的最长回文子串的长度

输入描述

一个字符串s,仅由小写字母组成,长度不超过100

输出描述

输出一个整数,表示最长回文子串的长度

样例

输入

lozjujzve

输出

// 最长公共子串为zjujz,长度为5
5

思路分析

  • 长度由0~n的字符串都可能是回文子串,若要使得下标[i,j]指向的字符串是回文子串,则必须保证下标[i+1,j-1]指向的字符串是回文子串,这说明回文子串内部存在一定依赖关系,由此可以考虑使用动态规划
  • 设置数组dp[n][n],其中n是字符串长度,dp[i][j]==true代表下标[i,j]指向的字符串arr[]是回文字符串
    • 易知,dp[i][i]初始为true,因为长度为1的字符串一定是回文字符串
    • 进入二重循环,第一重定义当前要判断的回文字符串长度,第二重确定当前字符串的起始下标i与终止下标j
    • 如果arr[i]==arr[j],那么说明当前[i,j]有可能是回文子串,需要由dp[i+1][j-1]是否为true决定
    • 其中有一种特殊情况,即i+1==j,此时说明当前判断的回文子串长度为2,此时首尾字符又相等,那么当前一定是回文子串
    • 每次确定下一个回文子串后就更新最大长度max
  • 最后输出结果max即可

代码实现

import java.util.Arrays;
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);char[] arr = scanner.next().toCharArray();boolean dp[][] = new boolean[arr.length][arr.length];for (int i = 0; i < arr.length; i++) {// 长度为 1 一定是回文串dp[i][i] = true;}int max = 1;for (int len = 2; len <= arr.length; len++) {for (int i = 0; i + len - 1 < arr.length; i++) {// i 指向字符串开头元素,j 指向字符串最后一个元素int j = i + len - 1;// 当前首尾元素相同,并且原来中间部分也是回文串,则当前字符串是回文串// 当首尾元素相同且字符串长度为 2 时,当前字符串也是回文串if (arr[i] == arr[j] && (i + 1 == j || dp[i + 1][j - 1])) {dp[i][j] = true;max = len;}}}System.out.println(max);}}
http://www.lryc.cn/news/38809.html

相关文章:

  • LeetCode 438. Find All Anagrams in a String
  • MyBatis-1:基础概念+环境配置
  • R语言基础(五):流程控制语句
  • 【Java开发】设计模式 02:工厂模式
  • 合并两个链表(自定义位置合并与有序合并)LeetCode--OJ题详解
  • Java编程问题总结
  • binutils工具集——objcopy的用法
  • Windows使用Stable Diffusion时遇到的各种问题和知识点整理(更新中...)
  • MySQL workbench基本查询语句
  • 软件测试详解
  • YOLOS学习记录
  • 数组边遍历(for循环)边删除为什么删不干净 及三种实现删除的方法
  • 环境配置之Keepass
  • Java 电话号码的组合
  • MATLAB——将直接型转化为并联型和级联型
  • .NET Framework .NET Core与 .NET 的区别
  • carla与ros2的自动驾驶算法-planning与control算法开发与仿真
  • corn表达式
  • 推荐系统中对抗性机器学习-文献综述与未来发展整理分享
  • Proteus8.15安装教程
  • Shell 基本运算符
  • Linux基础命令-sed流编辑器
  • C语言笔试题(1)
  • 网络连接的三种模式
  • 大学模拟电路期末考试模拟题详解
  • C/C++内存管理讲解
  • 【Linux】网络原理
  • list模拟实现
  • CSS看这一篇就够啦,CSS基础大全,可用于快速回顾知识,面试首选
  • Canvas详细使用方法(一)