
字符串s仅由a和b组成,每次从s中删除一个回文子串,问几步可把s删除完。
注意子串不需要是连续的,只需要保持顺序不变即可。
思路:
既然子串不需要是连续的,且s仅由a和b组成。
那么最多只需要2步即可把s删除完。
因为s本身是回文字符串时直接一步删除掉。
s本身不是回文字符串时,由于仅由a和b组成,我们跳着把a全部删除(不需要连续),因为全是a的字符串一定是回文字符串。
剩下的全都是b,也是一步可删除。
class Solution {
public int removePalindromeSub(String s) {
if(isPalind(s)) return 1;
return 2;
}
boolean isPalind(String s) {
int n = s.length();
for(int i = 0; i < n/2; i++) {
if(s.charAt(i) != s.charAt(n-1-i)) return false;
}
return true;
}
}
删除回文子串的最优步骤
该博客探讨了一个字符串问题,其中字符串s只包含字符'a'和'b'。如果s是回文串,一步即可删除;如果不是,通过跳过删除'a'然后删除所有'b',可以在两步内完成删除。解决方案主要涉及判断字符串是否为回文的方法。
1614

被折叠的 条评论
为什么被折叠?



