给你一个字符串 s ,请你找到 s 中两个 不相交回文子序列 ,使得它们长度的 乘积最大 。两个子序列在原字符串中如果没有任何相同下标的字符,则它们是 不相交 的。
请你返回两个回文子序列长度可以达到的 最大乘积 。
子序列 指的是从原字符串中删除若干个字符(可以一个也不删除)后,剩余字符不改变顺序而得到的结果。如果一个字符串从前往后读和从后往前读一模一样,那么这个字符串是一个 回文字符串 。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/maximum-product-of-the-length-of-two-palindromic-subsequences
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
class Solution {
int cnt = 0;
public int maxProduct(String s) {
String s1 = new String();
String s2 = new String();
dfs(s,s1,s2,0);
return cnt;
}
void dfs(String s , String s1 ,String s2 ,int index){
if(check(s1) && check(s2))
cnt = Math.max(cnt , s1.length() * s2.length() );
if(index == s.length()) return;
dfs(s ,s1 + s.charAt(index) ,s2 , index + 1 );
dfs(s ,s1 ,s2 + s.charAt(index) , index + 1 );
dfs(s ,s1 ,s2 , index + 1 );
}
boolean check(String s){
int l = 0 ,r = s.length() - 1;
while(l<r){
if(s.charAt(l++) != s.charAt(r--)) return false;
}
return true;
}
}