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

苏州塔维斯网站建设员工培训

苏州塔维斯网站建设,员工培训,想要自己做一个网站怎么做,wordpress idp题目: 给你一个字符串 s 和一个整数 k ,请你将 s 分成 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;} 
}
http://www.khdw.cn/news/34619.html

相关文章:

  • php做简单网站教程上海高玩seo
  • 成都奶茶加盟网站建设网页设计模板网站免费
  • 武汉cms建站系统青岛疫情最新情况
  • 找黄岩做网站企业建一个app平台的费用多少
  • 各家建站平台网络推广外包公司
  • 湖北网站建设优化媒体代发网站
  • 渭南做网站如何线上推广自己产品
  • 南京网站设计公司外贸网站优化推广
  • 想搞一个自己的网站怎么做网络推广与优化
  • 如何把物流做免费网站杭州网站建设 seo
  • 学交互设计网站数据交换平台
  • 一级a做爰片免播放器网站电脑培训班电脑培训学校
  • 软件设计网站惠州网站排名提升
  • 北京pk10网站建设锦州网站seo
  • 免注册制作网站看网站搜什么关键词
  • 在线视频播放网站怎么做的成都网站关键词推广
  • 南京高端网站制作公司网站搭建外贸
  • 阳江网站开发百度推广账号出售
  • 网站虚拟主机是什么网站模板免费下载
  • 做网站切片在线搜索资源
  • 江津哪个网站可以做顺风车手机百度官网首页
  • 被派出所找到老家说我做非法网站广告投放平台系统
  • 保定网站设计制作需要多少钱安卓优化清理大师
  • 动态网站开发相关技术杭州seo培训
  • 郑州网站建设电话网络营销的基本职能
  • 郑州做网站齿轮百度爱采购
  • 四川省第十五公司seo挂机赚钱
  • 北京市住房城乡建设委 房管局 官方网站广州抖音seo公司
  • 建设心理网站厦门seo排名
  • 滨海县城乡建设局网站2021最近比较火的营销事件