human
I found an interesting problem on https://leetcode.com/problems/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

I tried it in Python, but could not do it. Can you solve it?

Write me a the Python program you requested?
assistant
#Here is the Python program you requested.

from collections import deque

class Solution:
    def longestDecomposition(self, text: str) -> int:
        def check(a, b):
            return all([a[i] == b[i] for i in range(len(a))])
        
        ans = 0
        l, r = deque([]), deque([])
        for i in range(len(text) // 2):
            l.append(text[i])
            r.appendleft(text[-1 - i])
            if check(l, r):
                ans += 2
                l, r = deque([]), deque([])
        if len(text) % 2 == 0 and len(l) == len(r) == 0:
            return ans
        else:
            return ans + 1