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

1278. 分割回文串 III

1278. 分割回文串 III - 力扣(LeetCode)

class Solution:
    def palindromePartition(self, s: str, k: int) -> int:
        # 把 s[i:j+1] 改成回文串的最小修改次数
        @cache  # 缓存装饰器,避免重复计算 dfs 的结果(一行代码实现记忆化)
        def min_change(i: int, j: int) -> int:
            if i >= j:  # 子串只有一个字母,或者子串是空串
                return 0  # 无需修改
            return min_change(i + 1, j - 1) + (1 if s[i] != s[j] else 0)

        # 把 s[:r+1] 切 i 刀,分成 i+1 个子串,每个子串改成回文串的最小总修改次数
        @cache
        def dfs(i: int, r: int) -> int:
            if i == 0:  # 只有一个子串
                return min_change(0, r)
            # 枚举子串左端点 l
            return min(dfs(i - 1, l - 1) + min_change(l, r)
                       for l in range(i, r + 1))

        return dfs(k - 1, len(s) - 1)

作者:灵茶山艾府
链接:https://leetcode.cn/problems/palindrome-partitioning-iii/solutions/3081309/jiao-ni-yi-bu-bu-si-kao-dpcong-ji-yi-hua-z363/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

相关文章:

  • Docker安装Grafana数据可视化平台
  • Linux-计算机网络.udp
  • SQL Server下载和安装细节
  • 【慕课网wiki项目学习笔记01】Spring Boot 项目搭建
  • 使用vite创建vue3项目
  • 消息队列与RocketMQ
  • linux离线安装miniconda环境
  • 如何将本地项目提交到 GitHub
  • 登录服务器后如何找到对应的drupal所在的文件夹
  • FPGA-DE2115开发板实现4位全加器、3-8译码器。
  • Ribbon实现原理
  • 清华DeepSeek深度探索与进阶指南
  • 扫描纸质文件转pdf---少页数+手机+电脑协作
  • 01. HarmonyOS应用开发实践与技术解析
  • 2025-3-3 二叉树的存储结构
  • Makefile
  • 【Java EE】JavaEE导读,探寻 JavaEE:解锁企业级开发的璀璨密码与进阶指南
  • 论文学习——The Hilti SLAM Challenge Dataset
  • iOS逆向工程概述与学习路线图
  • DeepSeek、Grok、ChatGPT4.5和Gemini四大AI模型深度解析:谁才是你的最佳助手
  • 云南临沧一行贿案金额认定比受贿案多41万,重审时检方变更金额起诉
  • 特色茶酒、非遗挂面……六安皋品入沪赴“五五购物节”
  • 上海:下调个人住房公积金贷款利率
  • 成立6天的公司拍得江西第三大水库20年承包经营权,当地回应
  • 文旅部:加强对景区索道、游船等设施设备安全隐患排查整治
  • 预告:央行等部门将发声,介绍“一揽子金融政策支持稳市场稳预期”有关情况