# Solving Leetcode Interviews in Seconds with AI: Palindrome Partitioning IV


	# Introduction
	In this blog post, we will explore how to solve the LeetCode problem "1745" using AI. LeetCode is a popular platform for preparing for coding interviews, and with the help of AI tools like [Chatmagic](https://www.chatmagic.app), we can generate solutions quickly and efficiently - helping you pass the interviews and get the job offer without having to study for months.

	# Problem Statement
	> Given a string s, return true if it is possible to split the string s into three non-empty palindromic substrings. Otherwise, return false.​​​​​ A string is said to be palindrome if it the same string when reversed.   Example 1:  Input: s = "abcbdd" Output: true Explanation: "abcbdd" = "a" + "bcb" + "dd", and all three substrings are palindromes.  Example 2:  Input: s = "bcbddxy" Output: false Explanation: s cannot be split into 3 palindromes.    Constraints:  3 <= s.length <= 2000 s​​​​​​ consists only of lowercase English letters.  

	# Explanation
	Here's the solution to the problem, along with explanations:

*   **Approach:** The core idea is to iterate through all possible split points in the string `s`. For each pair of split points, we check if the three resulting substrings are palindromes. We use a helper function `is_palindrome` to efficiently determine if a substring is a palindrome.
*   **Optimization:** The solution is optimized by directly checking palindromes within the loop without storing intermediate results. It terminates early as soon as a valid split is found.
*   **Complexity:**
    *   Runtime Complexity: O(n^3), where n is the length of the string s (due to the nested loops and palindrome checks)
    *   Storage Complexity: O(1) (constant extra space)

	
	# Code
	```python
	def is_palindrome(s):
    """Checks if a string is a palindrome."""
    return s == s[::-1]

def split_into_three_palindromes(s):
    """
    Given a string s, return true if it is possible to split the string s into three non-empty palindromic substrings.
    Otherwise, return false.
    """
    n = len(s)
    for i in range(1, n - 1):
        for j in range(i + 1, n):
            s1 = s[:i]
            s2 = s[i:j]
            s3 = s[j:]

            if is_palindrome(s1) and is_palindrome(s2) and is_palindrome(s3):
                return True

    return False
	```
			
