leetcode 1147. Longest Chunked Palindrome Decomposition

Return the largest possible k such that there exists a_1, a_2, ..., a_k such that:

  • Each a_i is a non-empty string;
  • Their concatenation a_1 + a_2 + ... + a_k is equal to text;
  • For all 1 <= i <= k,  a_i = a_{k+1 - i}.

 

Example 1:

Input: text = "ghiabcdefhelloadamhelloabcdefghi"
Output: 7
Explanation: We can split the string on "(ghi)(abcdef)(hello)(adam)(hello)(abcdef)(ghi)".

Example 2:

Input: text = "merchant"
Output: 1
Explanation: We can split the string on "(merchant)".

Example 3:

Input: text = "antaprezatepzapreanta"
Output: 11
Explanation: We can split the string on "(a)(nt)(a)(pre)(za)(tpe)(za)(pre)(a)(nt)(a)".

Example 4:

Input: text = "aaa"
Output: 3
Explanation: We can split the string on "(a)(a)(a)".

 

Constraints:

  • text consists only of lowercase English characters.
  • 1 <= text.length <= 1000

解题思路:

class Solution {
public:
    int longestDecomposition(string text) 
    {
        return DFS(text , 0 , text.size()) ;
    }
    
    int DFS(string text , int l , int r)
    {
        if(l >= r) return 0 ;
        int res = 1 ; 
        for(int len = 1 ; len <= (r - l) / 2 ; ++len)
        {
            if(text.substr(l , len) == text.substr(r - len , len))
            {
                res = 2 + DFS(text , l + len , r - len) ;
                return res ;
            }
        }
        
        return res ;
    }
};

 

你可能感兴趣的:(leetcode)