两个回文子序列长度的最大乘积

大佬们的思路:利用dfs,对于i位置的的字符,两个子序列可以选择用或者不用;
class Solution {
int res=0;
public int maxProduct(String s) {
dfs(s,"","",0);
return res;
}
public void dfs(String s,String s1,String s2,int index){
if(check(s1)&&check(s2)){
res=Math.max(res,s1.length()*s2.length());//比较大小
}
if(index==s.length())return;//当前index已到达末尾
dfs(s,s1+s.charAt(index),s2,index+1);//s1使用index位置的字符
dfs(s,s1,s2+s.charAt(index),index+1);//s2使用index位置的字符
dfs(s,s1,s2,index+1);//s1,s2都不使用index位置的字符
}
public boolean check(String s){//判断是否为回文串
int len=s.length();
for(int i=0;i<len/2;i++){
if(s.charAt(i)!=s.charAt(len-i-1))
return false;
}
return true;
}
}

全部评论

相关推荐

不愿透露姓名的神秘牛友
06-18 16:32
quench@0916:一顿操作猛如虎,一看工资2500
点赞 评论 收藏
分享
05-07 19:10
已编辑
中国科学技术大学 C++
silly01:现在先去 momenta,8-9月去鹅找日常实习,八股文算法背好了你这随便进。不过建议补充一下后端知识,MySQL、Redis看下八股,再补个6824,加点go后台的技术栈,9月随便进大厂。CPP后端只能来WXG
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
06-18 17:37
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务