LeetCode 1147. 段式回文

news/2024/11/23 4:03:21/

LeetCode 1147. 段式回文

难度: h a r d \color{red}{hard} hard


题目描述

你会得到一个字符串 t e x t text text 。你应该把它分成 k k k 个子字符串 ( s u b t e x t 1 , s u b t e x t 2 , … , s u b t e x t k ) (subtext1, subtext2,…, subtextk) (subtext1,subtext2subtextk) ,要求满足:

  • s u b t e x t i subtexti subtexti非空 字符串
  • 所有子字符串的连接等于 t e x t text text ( 即 s u b t e x t 1 + s u b t e x t 2 + . . . + s u b t e x t k = = t e x t subtext1 + subtext2 + ... + subtextk == text subtext1+subtext2+...+subtextk==text )
  • 对于所有 i 的有效值( 即 1 < = i < = k 1 <= i <= k 1<=i<=k ) , s u b t e x t i = = s u b t e x t k − i + 1 subtexti == subtextk - i + 1 subtexti==subtextki+1 均成立

返回 k k k可能最大值。

示例 1:

输入:text = "ghiabcdefhelloadamhelloabcdefghi"
输出:7
解释:我们可以把字符串拆分成 "(ghi)(abcdef)(hello)(adam)(hello)(abcdef)(ghi)"。

示例 2:

输入:text = "merchant"
输出:1
解释:我们可以把字符串拆分成 "(merchant)"。

示例 3:

输入:text = "antaprezatepzapreanta"
输出:11
解释:我们可以把字符串拆分成 "(a)(nt)(a)(pre)(za)(tpe)(za)(pre)(a)(nt)(a)"。

提示:

  • 1 < = t e x t . l e n g t h < = 1000 1 <= text.length <= 1000 1<=text.length<=1000
  • t e x t text text 仅由小写英文字符组成

算法

(递归)

对一个字符串 text 来说,从前往后记为 left ,从后往前记为 right 如果可以划分就代表 text[left] == text[right]

只要找到相同的前后缀,就同时改变字符串 text

复杂度分析

  • 时间复杂度 O ( n 2 ) O(n^2) O(n2)

C++ 代码

class Solution {
public:int longestDecomposition(string text) {if (text.empty()) return 0;for (int i = 1, n = text.length(); i <= n / 2; ++ i){if (text.substr(0, i) == text.substr(n - i)){return 2 + longestDecomposition(text.substr(i, n - i * 2));}}return 1;}
};


http://www.ppmy.cn/news/45761.html

相关文章

【打卡】图像检索与重复图像识别1,2

Part4 图像检索与匹配 背景介绍 随着互联网上的图像数量不断增长&#xff0c;图像检索和匹配技术已成为许多视觉搜索引擎的核心技术&#xff0c;能够提高搜索结果的准确性和覆盖范围。图像检索和匹配是计算机视觉领域的重要研究方向之一&#xff0c;其主要目的是从大规模的图…

【一起啃书】《机器学习》第四章决策树

第四章 决策树 4.1 基本流程 决策树是一类常见的机器学习方法&#xff0c;是基于树结构来进行决策的&#xff0c;通过对训练样本的分析来确定划分属性&#xff0c;来模拟人类决策过程。 一般的&#xff0c;一棵决策树包含一个根结点、若干个内部结点和若干个叶结点&#xff0c;…

MSVC Debug 与 Release 库

CMake Debug后缀 set_target_properties(liba PROPERTIES DEBUG_POSTFIX "d") 或者 set(CMAKE_DEBUG_POSTFIX "d") 这样生成的库或者exe程序名会多一个d字符。如下链接 vc 运行时库 通过/MD、/MT 可以改变MSVC运行库&#xff0c; /MD代表使用动态运行时…

低代码/无代码平台在软件开发中的应用

随着技术的不断发展&#xff0c;软件开发也在不断地进步。低代码/无代码平台已经成为软件开发的一个新的趋势。在这篇文章中&#xff0c;我们将深入探讨低代码/无代码平台在软件开发中的应用&#xff0c;包括它们的优势、如何选择合适的平台以及如何使用这些平台来开发高质量的…

ubuntu快速安装VMware Tools(全屏用的)

VMware Tools实现主机和虚拟机的文件共享。 第一步 打开VMware Workstation,启动ubuntu系统。 点击主界面的&#xff08;虚拟机&#xff09;——点击&#xff08;安装VMware Tools&#xff09;。 弹出提示框点击是——等待自动下载完成。 第二步 将安装包复制到桌面&#x…

临床决策曲线分析如何影响预测模型的使用和评价

目前&#xff0c;临床决策曲线分析&#xff08;clinical decision curve analysis, DCA&#xff09;在业界已经被超过1500文献使用&#xff0c;也被多个主流的临床杂志所推荐&#xff0c;更被写进了临床预测模型撰写标准&#xff08;TRIPOD&#xff09;中&#xff0c;但是许多预…

牛客刷题

目录 1、乒乓球框 Ⅰ、思路 Ⅱ、代码 2、查找兄弟单词 输入描述&#xff1a; Ⅰ、思路 Ⅱ、代码 1、乒乓球框 乒乓球筐__牛客网 (nowcoder.com) nowcoder有两盒&#xff08;A、B&#xff09;乒乓球&#xff0c;有红双喜的、有亚力亚的……现在他需要判别A盒是否包含了B盒中所…

Android组件化开发

Android组件开发 一、背景 一个app随着业务增加&#xff0c;代码放在同一个模块中会越来越臃肿&#xff0c;同时也导致多人开发的一个难度。组件化可以把业务单独分出来&#xff0c;形成一个单独模块&#xff0c;可单独运行、测试等&#xff0c;相互之间不会影响。另外一个优…