题目描述
你会得到一个字符串 text 。你应该把它分成 k 个子字符串 (subtext1, subtext2,…, subtextk) ,要求满足:
subtexti 是 非空 字符串
所有子字符串的连接等于 text ( 即subtext1 + subtext2 + ... + subtextk == text )
对于所有 i 的有效值( 即 1 <= i <= k ) ,subtexti == subtextk - i + 1 均成立
返回k可能最大值。
题解
贪心+窗口,越小的窗口越好。
class Solution {
public int longestDecomposition(String text) {
int len = text.length();
if (len == 1){
return 1;
}
int start = 0, l = start;
int r = len - 1;
int level = 0;
int subLen = 1;
while(start <= r){
if (compare(text, start, r, subLen)){
level += (start == r ? 1 : 2);
start = l + 1;
subLen = 0;
}
l++;
r--;
subLen ++;
}
return level;
}
public boolean compare(String in, int lStart, int rStart, int len){
for(int i = 0; i < len; i++){
if (in.charAt(lStart + i) != in.charAt(rStart + i)){
return false;
}
}
return true;
}
}
提交结果
做了一次调优后