分割字符串
秦枫-_-
慵懒的程序猿
展开
-
C++动态规划问题(1)--分割回文串
本例以把任意一个字符分割成一些子串,使每个子串都是回文串,并且输出最小分割次数为例:以字符串aabc为例:首先利用中心扩散法判断是回文字符串的区间,(回文字符串的判断另一篇文章中有详解),首先,dp的定义是从s[0]到当前字符s[i]分割字符串所需的最少次数,那么,当0-i区间是回文串时dp[i]为0,所以aabc,a和aa均是回文串,所以dp[0],dp[1]均为0,接着若某一区间不是回文串,那我们先设一个最大分割次数即minDiv=i,例如aab这三个字符,此时i=2,他们分割的最大次数是原创 2021-03-10 23:51:10 · 468 阅读 · 1 评论 -
C++判断回文串--中心扩散法
判断回文字符串一种是暴力检索另外一种则是中心扩散法暴力搜索法:从字符串的开始和末尾处标定一个点后,依次向后向前检索,并判断前后检索的字符串是否相同bool isPalindrome(string s) { if (s.size() == 0) return true; int start = 0, end = s.size() - 1; while (start <= end) { if (s[st原创 2021-03-09 23:11:15 · 1927 阅读 · 8 评论 -
C++回溯法(1)--分割回文串
回溯法的简单例子利用回溯法输出一个字符串的所有可能的回文字符串,首先回文字符串可以记忆成对称形式的字符串,例如:efe,abba,即正读和反读都一样的字符串。// 代码#include <iostream>#include<vector>#include<string>#include<assert.h>#include <stdlib.h>using namespace std;class Solution {publ原创 2021-03-09 22:43:02 · 1053 阅读 · 1 评论