LeetCode //C - 1147. Longest Chunked Palindrome Decomposition

📅 2026/7/16 23:52:31
LeetCode //C - 1147. Longest Chunked Palindrome Decomposition
1147. Longest Chunked Palindrome DecompositionYou are given a string text. You should split it to k substrings $(subtext_1, subtext_2, …, subtext_k)$4 such that:s u b t e x t i subtext_isubtexti​is a non-empty string.The concatenation of all the substrings is equal to text (i.e.,s u b t e x t 1 s u b t e x t 2 . . . s u b t e x t k t e x t subtext_1 subtext_2 ... subtext_k textsubtext1​subtext2​...subtextk​text).s u b t e x t i s u b t e x t k − i 1 subtext_i subtext_{k - i 1}subtexti​subtextk−i1​for all valid values of i (i.e., 1 i k).Return the largest possible value of k.Example 1:Input:text “ghiabcdefhelloadamhelloabcdefghi”Output:7Explanation:We can split the string on “(ghi)(abcdef)(hello)(adam)(hello)(abcdef)(ghi)”.Example 2:Input:text “merchant”Output:1Explanation:We can split the string on “(merchant)”.Example 3:Input:text “antaprezatepzapreanta”Output:11Explanation:We can split the string on “(a)(nt)(a)(pre)(za)(tep)(za)(pre)(a)(nt)(a)”.Constraints:1 text.length 1000text consists only of lowercase English characters.From: LeetCodeLink: 1147. Longest Chunked Palindrome DecompositionSolution:Ideas:greedily match the shortest same prefix and suffix. Each match gives 2 chunks, except when they meet in the middle, then it gives 1.Code:intlongestDecomposition(char*text){intnstrlen(text);intl0,rn-1;intlen1;intans0;while(lr){intok1;for(inti0;ilen;i){if(text[li]!text[r-len1i]){ok0;break;}}if(ok){if(llen-1r-len1)ans2;elseans1;llen;r-len;len1;}else{len;}}returnans;}