Determine sanitized palindrome in string
Company: LinkedIn
Role: Software Engineer
Category: Coding & Algorithms
Difficulty: Medium
Interview Round: HR Screen
Quick Answer: This question evaluates string manipulation, text sanitization, Unicode-aware character classification, and algorithmic complexity reasoning, and falls under the Coding & Algorithms domain.
Constraints
- 0 <= s.length <= 2 * 10^5
- s consists of printable ASCII characters (and may include Unicode letters/digits).
- A string with no alphanumeric characters is considered a palindrome.
Examples
Input: ("A man, a plan, a canal: Panama",)
Expected Output: True
Explanation: Sanitizes to 'amanaplanacanalpanama', which reads the same both ways.
Input: ("race a car",)
Expected Output: False
Explanation: Sanitizes to 'raceacar', which is not a palindrome.
Input: (" ",)
Expected Output: True
Explanation: Whitespace-only string sanitizes to the empty string, treated as a palindrome.
Input: ("",)
Expected Output: True
Explanation: Empty input has no characters to mismatch, so it is a palindrome.
Input: (".,",)
Expected Output: True
Explanation: Punctuation-only input sanitizes to the empty string, treated as a palindrome.
Input: ("0P",)
Expected Output: False
Explanation: Both characters are alphanumeric; lowercased it is '0p', and '0' != 'p', so it is not a palindrome.
Input: ("Madam",)
Expected Output: True
Explanation: Case-insensitive comparison: 'madam' is a palindrome.
Input: ("abBA",)
Expected Output: True
Explanation: Lowercased to 'abba', a palindrome.
Input: ("12321",)
Expected Output: True
Explanation: All-digit palindrome.
Input: ("No 'x' in Nixon",)
Expected Output: True
Explanation: Sanitizes to 'noxinnixon', which is a palindrome.
Hints
- First normalize the string: keep only alphanumeric characters and lowercase them.
- After normalizing, a palindrome check is just comparing the sequence to its reverse — or use two pointers moving inward.
- Decide your edge-case policy up front: the empty/whitespace-only/punctuation-only cases should all return true.