段式回文
你会得到一个字符串 text 。你应该把它分成 k 个子字符串 (subtext1, subtext2,…, subtextk)
,要求满足:
- subtexti 是
非空
字符串 - 所有子字符串的连接等于
text
( 即subtext1 + subtext2 + ... + subtextk == text
) - 对于所有 i 的有效值( 即
1 <= i <= k
) ,subtexti == subtextk - i + 1
均成立
返回k
可能最大值。
示例 1:
输入: text = "ghiabcdefhelloadamhelloabcdefghi"
输出:7
解释: 我们可以把字符串拆分成 "(ghi)(abcdef)(hello)(adam)(hello)(abcdef)(ghi)"。
示例 2:
输入:text = "merchant"
输出:1
解释:我们可以把字符串拆分成 "(merchant)"。
示例 3:
输入:text = "antaprezatepzapreanta"
输出:11
解释:我们可以把字符串拆分成 "(a)(nt)(a)(pre)(za)(tpe)(za)(pre)(a)(nt)(a)"。
提示:
1 <= text.length <= 1000
text 仅由小写英文字符组成
来源:力扣(LeetCode)
题解
class Solution {
public int longestDecomposition(String text) {
//判断非空,防止字符串正好切完错误返回1
if(text.isEmpty()) return 0;
//前后遍历比较
for(int i = 1,len = text.length();i <= len / 2;++i){
//切片比较
if(text.substring(0, i).equals(text.substring(len - i))){
//递归相加
return 2 + longestDecomposition(text.substring(i,len - i));
}
}
//无法拆分
return 1;
}
}
本文来自博客园,作者:wuliOVO,转载请注明原文链接:https://www.cnblogs.com/wuli-Zhang/p/17309043.html