# Solving Leetcode Interviews in Seconds with AI: Substring Matching Pattern


	# Introduction
	In this blog post, we will explore how to solve the LeetCode problem "3407" 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
	> You are given a string s and a pattern string p, where p contains exactly one '*' character. The '*' in p can be replaced with any sequence of zero or more characters. Return true if p can be made a substring of s, and false otherwise.   Example 1:  Input: s = "leetcode", p = "ee*e" Output: true Explanation: By replacing the '*' with "tcod", the substring "eetcode" matches the pattern.  Example 2:  Input: s = "car", p = "c*v" Output: false Explanation: There is no substring matching the pattern.  Example 3:  Input: s = "luck", p = "u*" Output: true Explanation: The substrings "u", "uc", and "uck" match the pattern.    Constraints:  1 <= s.length <= 50 1 <= p.length <= 50  s contains only lowercase English letters. p contains only lowercase English letters and exactly one '*'  

	# Explanation
	Here's the breakdown of the approach, complexity, and the Python code:

*   **Approach:**
    *   Split the pattern `p` into two parts at the `*` character.
    *   Iterate through the string `s` to find potential starting positions for the pattern.
    *   Check if the parts before and after the `*` match the corresponding prefixes and suffixes of the substring in `s`.

*   **Complexity:**
    *   Runtime: O(m\*n), where n is the length of `s` and m is the length of `p`. Storage: O(1).

	
	# Code
	```python
	def solve():
    s = input()
    p = input()

    star_index = p.find('*')
    prefix = p[:star_index]
    suffix = p[star_index + 1:]

    for i in range(len(s) - len(p) + 1):
        substring = s[i: i + len(p) - 1] 

        if substring.startswith(prefix) and substring.endswith(suffix):
            return True

    if len(prefix) + len(suffix) == len(p) - 1: #Edge case where the * represents 0 characters and the substring has the exact size.
        for i in range(len(s) - len(prefix) - len(suffix) + 1):
            substring = s[i : i + len(prefix) + len(suffix)]
            if substring.startswith(prefix) and substring.endswith(suffix):
                return True
        
        
    if len(suffix) == 0:
        for i in range(len(s) - len(prefix) + 1):
            substring = s[i : ]
            if substring.startswith(prefix):
                return True
    
    if len(prefix) == 0:
        for i in range(len(s) - len(suffix) + 1):
            substring = s[i : ]
            if substring.endswith(suffix):
                return True
    
    return False


print(solve())
	```
			
