Can two names match with ≤2 swaps?
Company: DoorDash
Role: Software Engineer
Category: Coding & Algorithms
Difficulty: medium
Interview Round: Technical Screen
Quick Answer: This question evaluates string manipulation and combinatorial reasoning skills, focusing on character multisets, permutations, and the implications of a bounded number of swap operations.
Constraints
- 1 <= len(s) = len(t) <= 200000
- s and t contain ASCII letters or lowercase English letters
- Comparison is case-sensitive
Examples
Input: ("abca", "aabc")
Expected Output: True
Explanation: Swap indices 1 and 3 to get "aacb", then swap indices 2 and 3 to get "aabc".
Input: ("abcd", "badc")
Expected Output: True
Explanation: Swap indices 0 and 1 to get "bacd", then swap indices 2 and 3 to get "badc".
Input: ("abcd", "abdc")
Expected Output: True
Explanation: One swap of indices 2 and 3 transforms s into t.
Input: ("abcd", "abdd")
Expected Output: False
Explanation: The two strings do not contain the same multiset of characters, so no swaps can make them equal.
Input: ("abcd", "bcda")
Expected Output: False
Explanation: All four positions mismatch, but this is a 4-cycle and requires 3 swaps, which is more than allowed.
Input: ("abcde", "eabcd")
Expected Output: False
Explanation: There are 5 mismatched positions. Two swaps can affect at most 4 positions.
Input: ("same", "same")
Expected Output: True
Explanation: The strings are already equal, so 0 swaps are needed.
Input: ("Aa", "aA")
Expected Output: True
Explanation: The comparison is case-sensitive, and swapping the two characters transforms s into t.
Input: ("a", "b")
Expected Output: False
Explanation: A single-character string cannot be changed by swapping, and the characters differ.
Hints
- A single swap can only change the characters at two positions. How many mismatched positions can two swaps affect at most?
- Once you know the mismatched positions, there are only a few possible swaps worth trying.