Skip to main content

Command Palette

Search for a command to run...

Solving Leetcode Interviews in Seconds with AI: Check if Strings Can be Made Equal With Operations I

Updated
2 min read

Introduction

In this blog post, we will explore how to solve the LeetCode problem "2839" using AI. LeetCode is a popular platform for preparing for coding interviews, and with the help of AI tools like Chatmagic, 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 two strings s1 and s2, both of length 4, consisting of lowercase English letters. You can apply the following operation on any of the two strings any number of times: Choose any two indices i and j such that j - i = 2, then swap the two characters at those indices in the string. Return true if you can make the strings s1 and s2 equal, and false otherwise. Example 1: Input: s1 = "abcd", s2 = "cdab" Output: true Explanation: We can do the following operations on s1: - Choose the indices i = 0, j = 2. The resulting string is s1 = "cbad". - Choose the indices i = 1, j = 3. The resulting string is s1 = "cdab" = s2. Example 2: Input: s1 = "abcd", s2 = "dacb" Output: false Explanation: It is not possible to make the two strings equal. Constraints: s1.length == s2.length == 4 s1 and s2 consist only of lowercase English letters.

Explanation

Here's the breakdown of the solution:

  • Connectivity: The operation allows us to swap characters at indices i and i+2. This means indices 0 and 2 are connected, and indices 1 and 3 are connected.

  • Check Components: Therefore, to make s1 and s2 equal, we just need to ensure that the characters at connected indices form the same sets. This can be verified by sorting the characters at even indices and odd indices of both strings and comparing the sorted sequences.

  • Efficiency: Sorting is efficient for small strings of a fixed length.

  • Time & Space Complexity: O(1) runtime, O(1) storage.

Code

    def can_make_equal(s1: str, s2: str) -> bool:
    """
    Given two strings s1 and s2, both of length 4, consisting of lowercase English letters.
    You can apply the following operation on any of the two strings any number of times:
    Choose any two indices i and j such that j - i = 2, then swap the two characters at those indices in the string.
    Return true if you can make the strings s1 and s2 equal, and false otherwise.
    """

    s1_even = sorted([s1[0], s1[2]])
    s1_odd = sorted([s1[1], s1[3]])
    s2_even = sorted([s2[0], s2[2]])
    s2_odd = sorted([s2[1], s2[3]])

    return s1_even == s2_even and s1_odd == s2_odd

More from this blog

C

Chatmagic blog

2894 posts