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

【算法题】得到K个半回文串的最小修改次数

题目:

给你一个字符串 s 和一个整数 k ,请你将 s 分成 k 个 子字符串 ,使得每个 子字符串 变成 半回文串 需要修改的字符数目最少。

请你返回一个整数,表示需要修改的 最少 字符数目。

注意:

如果一个字符串从左往右和从右往左读是一样的,那么它是一个 回文串 。
如果长度为 len 的字符串存在一个满足 1 <= d < len 的正整数 d ,len % d == 0 成立且所有对 d 做除法余数相同的下标对应的字符连起来得到的字符串都是 回文串 ,那么我们说这个字符串是 半回文串 。比方说 “aa” ,“aba” ,“adbgad” 和 “abab” 都是 半回文串 ,而 “a” ,“ab” 和 “abca” 不是。
子字符串 指的是一个字符串中一段连续的字符序列。

示例 1:

输入:s = “abcac”, k = 2
输出:1
解释:我们可以将 s 分成子字符串 “ab” 和 “cac” 。子字符串 “cac” 已经是半回文串。如果我们将 “ab” 变成 “aa” ,它也会变成一个 d = 1 的半回文串。
该方案是将 s 分成 2 个子字符串的前提下,得到 2 个半回文子字符串需要的最少修改次数。所以答案为 1 。
示例 2:

输入:s = “abcdef”, k = 2
输出:2
解释:我们可以将 s 分成子字符串 “abc” 和 “def” 。子字符串 “abc” 和 “def” 都需要修改一个字符得到半回文串,所以我们总共需要 2 次字符修改使所有子字符串变成半回文串。
该方案是将 s 分成 2 个子字符串的前提下,得到 2 个半回文子字符串需要的最少修改次数。所以答案为 2 。
示例 3:

输入:s = “aabbaa”, k = 3
输出:0
解释:我们可以将 s 分成子字符串 “aa” ,“bb” 和 “aa” 。
字符串 “aa” 和 “bb” 都已经是半回文串了。所以答案为 0 。

提示:

2 <= s.length <= 200
1 <= k <= s.length / 2
s 只包含小写英文字母。

java代码:

class Solution {char[] chars;int[][] dps;int[][] checks;public int minimumChanges(String s, int k) {this.chars = s.toCharArray();final int n = chars.length;this.dps = new int[n][k + 1];this.checks = new int[n][n];return dp(0, k) - k;}private int checkD(int head, int tail, int d) {final int length = tail - head + 1;int res = 0;for (int x = 0; x < d; x++) {for (int left = head + x, right = left + length - d; left < right; left += d, right -= d) {if (chars[left] != chars[right]) res++;}}return res;}private int check(int head, int tail) {if (checks[head][tail] > 0) return checks[head][tail];int length = tail - head + 1;int sq = (int)Math.sqrt(length);int best = checkD(head, tail, 1);for (int d = 2; d <= sq; d++) {if (length % d > 0) continue;best = Math.min(best, checkD(head, tail, d));best = Math.min(best, checkD(head, tail, length / d));}return checks[head][tail] = best + 1;}private int dp(int head, int k) {if (k == 1) return check(head, chars.length - 1);if (dps[head][k] > 0) return dps[head][k];final int end = chars.length - (k - 1) * 2;int best = Integer.MAX_VALUE;for (int tail = head + 1; tail < end; tail++) {int res = check(head, tail) + dp(tail + 1, k - 1);best = Math.min(best, res);}return dps[head][k] = best;} 
}

相关文章:

【算法题】得到K个半回文串的最小修改次数

题目&#xff1a; 给你一个字符串 s 和一个整数 k &#xff0c;请你将 s 分成 k 个 子字符串 &#xff0c;使得每个 子字符串 变成 半回文串 需要修改的字符数目最少。 请你返回一个整数&#xff0c;表示需要修改的 最少 字符数目。 注意&#xff1a; 如果一个字符串从左往…...

C# 通过IP获取Mac地址(ARP)

C# 通过IP获取Mac地址 [DllImport("Iphlpapi.dll")] private static unsafe extern int SendARP(Int32 dest, Int32 host, ref Int32 mac, ref Int32 length);[DllImport("Ws2_32.dll")] private static extern Int32 inet_addr(string ip);public static…...

【QT】信号和槽

一、前置示例代码 main.cpp #include "widget.h"#include <QApplication>int main(int argc, char *argv[]) {QApplication a(argc, argv); // 应用程序对象a&#xff0c;在Qt中&#xff0c;应用程序对象&#xff0c;有且仅有一个。Widget w; // 窗口对…...

有话则长,无话则短

有话则长&#xff0c;无话则短...

云台/稳定器/无人机姿态控制之欧拉角与四元数控制优缺点分析

基于欧拉角的姿态控制简述&#xff1a; 通过陀螺仪数据解算出姿态&#xff1a;pitch,roll,yaw(相对航向)&#xff0c;根据目标 姿态:dst_pitch,dst_roll,dst_yaw计算出误差姿态pitch_err,roll_err,yaw_err。将误差姿态转换为目标速度e_pitch_rate,e_roll_rate,e_yaw_rate。然后…...

Go 工具链详解(六):依赖管理神器

go mod 是 Golang 的官方依赖管理工具&#xff0c;从 Go 1.11 版本开始引入。go mod 使用一种被称为模块&#xff08;modules&#xff09;的方式来管理依赖&#xff0c;每个模块都包含了一组 Golang 包。一个 Go 程序可以由多个模块组成&#xff0c;每个模块都可以有自己的 go.…...

C语言解决约瑟夫环问题

约瑟夫环问题是一个经典的数学问题&#xff0c;它的描述如下&#xff1a;有n个人围成一圈&#xff0c;从第1个人开始报数&#xff0c;数到第m个人出列&#xff0c;然后从出列的下一个人开始重新报数&#xff0c;数到第m个人出列&#xff0c;如此循环&#xff0c;直到最后一个人…...

6.6 Elasticsearch(六)京淘项目改造

文章目录 1.项目准备2.基础配置2.1 添加pom.xml依赖2.2 yml配置es服务器地址列表 3.具体实现3.1 item实体类封装3.2 添加接口3.3 SearchController 4.search.jsp界面4.1 搜索内容展示4.2 高亮内容样式设置4.3 搜索框内容回填4.4 添加上下页按钮 1.项目准备 我们切换回到此前的…...

Socks5代理:数字化时代的技术支柱

随着数字化时代的到来&#xff0c;技术不仅改变了我们的日常生活&#xff0c;还重新定义了商业、通信、娱乐和全球互联。在这一浪潮中&#xff0c;Socks5代理技术崭露头角&#xff0c;成为跨界电商、爬虫数据分析、企业出海和游戏体验的关键推动力。这项技术不仅在实现数字化愿…...

基本微信小程序的汽车租赁公司小程序

项目介绍 任何系统都要遵循系统设计的基本流程&#xff0c;本系统也不例外&#xff0c;同样需要经过市场调研&#xff0c;需求分析&#xff0c;概要设计&#xff0c;详细设计&#xff0c;编码&#xff0c;测试这些步骤&#xff0c;基于Java语言、微信小程序技术设计并实现了汽…...

Leetcode刷题详解——搜索插入位置

1. 题目链接&#xff1a;35. 搜索插入位置 2. 题目描述&#xff1a; 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。…...

centos升级openssh

注意&#xff1a; openssh升级异常会造成服务失联&#xff0c;如果在允许的情况下可以安装talent服务&#xff0c;使用talent升级&#xff1b; 如果不能安装talent服务&#xff0c;可以打开多个终端&#xff0c;启动ping命令&#xff0c;防止升级终端失败后&#xff0c;作为备用…...

架构、框架、模式,极简文字介绍

1、架构、框架、模式是一种从大到小的关系&#xff0c;也是一种组合关系 2、架构一般针对一个行业或一类应用&#xff0c;是技术和应用的完美组合 3、框架比较小&#xff0c;很多表现为中间件&#xff0c;框架一般是从技术角度解决同类问题&#xff0c;从技术的横切面来解决实…...

Java实现Fisher‘s Exact Test 的置信区间的计算

实现代码 package com.bgi.aigi.common.utils;public class FisherExactUtils {public static double[] getConfidenceInterval(double[][] data) {if (datanull||data.length!2||data[0].length!2||data[1].length!2) {return null;}double[] intervalnew double[2];double …...

YOLOv8改进:全网原创首发 | 新颖的多尺度卷积注意力(MSCA),即插即用,助力小目标检测 | NeurIPS2022

💡💡💡本文全网首发独家改进:多尺度卷积注意力(MSCA),有效地提取上下文信息,新颖度高,创新十足。 1)作为注意力MSCA使用; 推荐指数:五星 MSCA | 亲测在多个数据集能够实现涨点,多尺度特性在小目标检测表现也十分出色。 💡💡💡Yolov8魔术师,独家首发…...

linux中好玩的数据流定向和管道命令一

知识点复习&#xff1a; 什么是数据流定向&#xff0c;个人理解就是将 一些结果信息不打印在屏幕上&#xff0c;而是定位在某一个文件里面 ll /wdf > file 会覆盖file的原内容 ll /wdf >> 会追加到原文件后面 比如在自己的目录新建1.TXT&#xff0c; 2.txt ll /…...

tesseract-ocr-w64-setup-5.3.3.20231005.exe 百度网盘下载

链接&#xff1a;https://pan.baidu.com/s/1q6u-nRvj2S8n6jSYz2iqig?pwdbtm4 提取码&#xff1a;btm4...

Linux环境下Redis 集群部署

Linux环境下Redis 集群部署 1.单机Redis部署2.Redis 集群配置2.1 创建redis集群安装目录2.2 将redis单机部署目录下的redis.confi文件复制到每个目录下2.3 修改每个文件夹下的redis.conf2.4 修改完六个配置内容后开始启动2.5 启动完后查看进程2.6 建集群 1.单机Redis部署 Linu…...

html iframe 框架有哪些优缺点?

目录 前言&#xff1a; 用法&#xff1a; 理解&#xff1a; 优点&#xff1a; 嵌套外部内容&#xff1a; 独立性&#xff1a; 分离安全性&#xff1a; 跨平台兼容性&#xff1a; 方便维护&#xff1a; 缺点&#xff1a; 性能开销&#xff1a; 用户体验问题&#xf…...

git 版本管理

标签管理 git tag: 标签的操作 用于给某次提交打个标签 命令&#xff1a;git tag B08P09 为当前提交打上 B08P09 的标签 命令&#xff1a;git tag B08P09 ab1591eb4e06c1e93fdd50126b9fab8a88d89155 为这个节点打上 B08P09 的标签 命令&#xff1a;git tag -a <tagname>…...

杰理701N可视化SDK:从stream.bin生成到工程导入的EQ调音闭环

1. 杰理701N可视化SDK与EQ调音基础 第一次接触杰理701N的开发者可能会好奇&#xff0c;这个可视化SDK到底能做什么&#xff1f;简单来说&#xff0c;它就像给声学工程师配了一把"声音雕刻刀"。通过图形化界面&#xff0c;你可以实时调整蓝牙耳机、音箱等设备的音效表…...

恶劣环境下LED发光服饰的可靠系统构建:从设计到工艺的工程实践

1. 项目概述与核心挑战如果你曾经尝试过制作一件会发光的服装&#xff0c;无论是为了音乐节、万圣节还是水下表演&#xff0c;你大概都体会过那种“亮一次&#xff0c;修三次”的挫败感。LED灯带在工作室的桌面上测试时完美无瑕&#xff0c;一旦穿到身上&#xff0c;开始活动、…...

完整实战指南:使用N_m3u8DL-RE高效解决流媒体下载难题

完整实战指南&#xff1a;使用N_m3u8DL-RE高效解决流媒体下载难题 【免费下载链接】N_m3u8DL-RE Cross-Platform, modern and powerful stream downloader for MPD/M3U8/ISM. English/简体中文/繁體中文. 项目地址: https://gitcode.com/GitHub_Trending/nm3/N_m3u8DL-RE …...

地下态势智能研判,拔高硐室深部安全透明管控等级技术白皮书

地下态势智能研判&#xff0c;拔高硐室深部安全透明管控等级技术白皮书 副标题&#xff1a;全要素三维动态重建井下场景&#xff0c;融合井下无感坐标解算、跨断面跨镜轨迹串联、身体指纹人员轨迹存档&#xff0c;井下风险前置感知、动态全程透明追溯 前言 矿山井下深部硐室与纵…...

智慧树自动刷课神器Autovisor:3分钟极速上手的完整指南

智慧树自动刷课神器Autovisor&#xff1a;3分钟极速上手的完整指南 【免费下载链接】Autovisor 2025智慧树刷课脚本 基于Python Playwright的自动化程序 [有免安装版] 项目地址: https://gitcode.com/gh_mirrors/au/Autovisor 还在为智慧树平台的繁琐操作而烦恼吗&#…...

低多边形≠简陋!掌握这7个结构化Prompt技巧,3分钟产出可商用IP形象(附Figma网格对齐校验表)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;低多边形设计的认知革命&#xff1a;从“简陋感”到“结构化美学” 低多边形&#xff08;Low-Poly&#xff09;设计曾长期被误读为建模能力不足的妥协产物&#xff0c;但其本质是一场对数字视觉语法的系…...

如何轻松管理Switch游戏:NS-USBLoader完整指南,三步搞定游戏安装与系统引导

如何轻松管理Switch游戏&#xff1a;NS-USBLoader完整指南&#xff0c;三步搞定游戏安装与系统引导 【免费下载链接】ns-usbloader Awoo Installer and GoldLeaf uploader of the NSPs (and other files), RCM payload injector, application for split/merge files. 项目地址…...

2026生鲜店收银软件特点功能对比

每天傍晚高峰期&#xff0c;生鲜店门口排起的长队总是让店主心头一紧。顾客手里拿着刚挑好的蔬菜水果&#xff0c;眼神里透着急切&#xff0c;而收银台前的店员却还在手忙脚乱地查找商品代码、手动输入重量&#xff0c;甚至因为系统卡顿导致支付失败。这种场景不仅流失了潜在客…...

基于LLM的游戏AI智能体:从感知到决策的框架构建与实践

1. 项目概述&#xff1a;一个能“玩”游戏的AI智能体最近在GitHub上看到一个挺有意思的项目&#xff0c;叫ChattyPlay-Agent。光看名字&#xff0c;你可能会觉得这又是一个基于大语言模型的聊天机器人。但点进去仔细研究后&#xff0c;我发现它的定位非常独特&#xff1a;这是一…...

天学网口碑好不好?2026年最新用户实测反馈给你答案

作为深耕教育数字化落地领域5年的从业者&#xff0c;最近后台收到不少公立校电教组老师、学生家长的提问&#xff1a;主打AI英语教学的天学网口碑到底怎么样&#xff1f;刚好我们团队刚做完2026年第一季度的英语教育数字化工具落地效果调研&#xff0c;结合一手实测数据给大家客…...