博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
算法:回文串问题
阅读量:4059 次
发布时间:2019-05-25

本文共 426 字,大约阅读时间需要 1 分钟。

问题A:

给定一个字符串,任意位置可以添加新字符,则最少添加几个变为回文串:

dp,时间O(N*N)

维护二维表,dp[i][j] 表示 区间[i…j]所需最少字符。

转移方程:dp[i][j] = dp[i+1][j-1] or dp[i][j] = min{dp[i+1][j], dp[i][j-1]} + 1


问题B:

给定一个字符串str,再给定一个回文子串strpls,则在添加元素最少时,给出str的回文串。

剥洋葱,时间O(N)

L,R从str外层找strpls最外的元素,然后处理L,R之外元素,然后依次往内层递归。


问题C:

给定一串括号,给出最长合法子串。

例如,“()(()()(”,返回4

dp,时间O(N)

dp[i]表示必须以 i 结尾的最长合法串长度。

所以循环时考虑,i - dp[i] - 1位置和i-1位置即可。
有种特殊情况,需要处理,
即"()(())"的情况,当找到“(())”后,需要把之前的“()”合并。


转载地址:http://mbwji.baihongyu.com/

你可能感兴趣的文章
【数据结构周周练】008 二叉树的链式创建及测试
查看>>
【数据结构周周练】009 二叉树的先序、中序、后序遍历(递归算法实现)
查看>>
【数据结构必备基本知识】递归与迭代的联系、区别与优缺点对比详解
查看>>
【数据结构周周练】010 递归算法实现二叉树的创建与遍历
查看>>
【数据结构周周练】011 非递归算法实现二叉树的遍历
查看>>
【数据结构周周练】012 利用队列和非递归算法实现二叉树的层次遍历
查看>>
【数据结构周周练】013 利用栈和非递归算法求二叉树的高
查看>>
【数据结构周周练】014 利用栈和非递归算法求链式存储的二叉树是否为完全二叉树
查看>>
【数据结构周周练】015 利用递归算法创建链式存储的二叉树并转换左右孩子结点
查看>>
【数据结构周周练】016 利用递归算法及孩子兄弟表示法创建树、遍历树并求树的深度
查看>>
【数据结构周周练】017 利用递归算法及孩子兄弟表示法创建森林、遍历森林并求森林的叶子结点个数
查看>>
【数据结构必备基本知识】数据结构常用预定义常量、类型及头文件
查看>>
【数据结构周周练】018 利用递归算法及中序遍历将二叉树线索化并遍历
查看>>
【数据结构周周练】019 利用递归算法创建二叉排序树并遍历
查看>>
【数据结构周周练】020 二叉排序树的排序与迭代查找
查看>>
【数据结构周周练】035 利用递归判断一棵二叉树是否为二叉排序树
查看>>
【数据结构周周练】021 求某一个数据在二叉排序树中的层数
查看>>
【数据结构周周练】022 从大到小输出二叉排序树中小于某个值的所有结点编号及数据
查看>>
【数据结构必备基础知识】之图的基本概念详解
查看>>
【数据结构必备基本知识】图的存储结构(邻接矩阵、邻接表、十字链表、邻接多重表)详解
查看>>