(动态规划) 132. 分割回文串 II ——【Leetcode每日一题】

news/2024/12/27 11:18:32/

❓ 132. 分割回文串 II

难度:困难

给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是回文。

返回符合要求的 最少分割次数

示例 1:

输入:s = “aab”
输出:1
解释:只需一次分割就可将 s 分割成 [“aa”,“b”] 这样两个回文子串。

示例 2:

输入:s = “a”
输出:0

示例 3:

输入:s = “ab”
输出:1

提示

  • 1 < = s . l e n g t h < = 2000 1 <= s.length <= 2000 1<=s.length<=2000
  • s 仅由小写英文字母组成

💡思路:动态规划

  • 先使用中心扩展法,计算以每个字符为中心的最长回文串,注意
    • 既可以 以单个字符为中心,此时的回文串长度为奇数个;
    • 也可以 以两个相同的字符为中心,此时的回文串为偶数个;
  • 在计算每个最长回文串的长度后,得到每个回文串的起始位置,并不断更新以该位置为起点的最长回文串的长度;

🍁代码:(C++、Java)

C++


Java


🚀 运行结果:

🕔 复杂度分析:

  • 时间复杂度 O ( n ) O(n) O(n),其中 n 为数组的长度。
  • 空间复杂度 O ( n ) O(n) O(n),其中 n 为数组的长度。

题目来源:力扣。

放弃一件事很容易,每天能坚持一件事一定很酷,一起每日一题吧!
关注我LeetCode主页 / CSDN—力扣专栏,每日更新!

注: 如有不足,欢迎指正!


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

相关文章

Mac大小写切换需长按caps lock键解决办法

偏好设置—键盘—输入法—长按以启用全大写键入&#xff08;去掉前面的对号&#xff0c;注意&#xff1a;这一行字很小&#xff09;。

从键盘输入一个小写英文字母,将其转换为大写英文字母

#include <stdio.h> //编程从键盘输入一个小写英文字母&#xff0c;将其转换为大写英文字母&#xff0c;将转换后的大写英文字母及其十进制的ASCII码值显示在屏幕上。 int main(void) {printf("请输入一个小写字母&#xff1a;\n");char a,b;scanf("%c&qu…

小写字母转化为大写字母

【深基2.例6】字母转换 题目描述 输入一个小写字母&#xff0c;输出其对应的大写字母。例如输入 q时&#xff0c;会输出 Q。 输入格式 无 输出格式 无 输入输出样例 输入 #1 q 输出 #1 Q import java.util.Scanner;pub…

大写字母转换为小写

几行小代码简单的进行一下转换。这里的getchar&#xff08;&#xff09;和putchar&#xff08;&#xff09;起到的作用是输入输出&#xff0c;这个做为知识点要记住&#xff0c;EOF的全称为end of file 是文件结束标志&#xff0c;通常放在文件的末尾&#xff0c;这里做为循环判…

将小写字母转换为大写

将小写字母转换为大写 【问题描述】输入一个长度小于80的字符串&#xff0c;将小写字母转换为大写&#xff0c;如果输入串没有小写字母&#xff0c;则输出提示信息。要求在主函数中输入字符串&#xff0c;并输出结果&#xff0c;在被调函数中完成将小写字母转换为大写。 【输…

将大写字母转换为小写字母

欢迎加qq群&#xff1a;453398542 学习讨论&#xff0c;会定期分享资料课程&#xff0c;解答问题。 将大写字母转换为小写字母 #include<stdio.h> int main() { char a; printf("输入一个字母&#xff1a;"); scanf("%c",&a); aa>A&&…

小写数字转换成大写数字

#include<stdio.h> void main() {double x,y; char *ch[]={"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"}; char *ch1[]={"拾","佰",…

从键盘输入一个大写字母,转换成小写字母

#include <stdio.h> int main() { char n; printf(“请输入一个大写字母:”); scanf("%c",&n); nn32; putchar(n); putchar(’\n’); return 0; }