Coding questions · LinkedIn
Determine sanitized palindrome in string
This question evaluates string manipulation, text sanitization, Unicode-aware character classification, and algorithmic complexity reasoning, and falls under the Coding & Algorithms domain.
Write a function that determines whether a string is a palindrome after removing non-alphanumeric characters and ignoring case (e.g., punctuation, whitespace, symbols). Provide time and space complexity, and include tests covering edge cases with special characters and Unicode.
Determine sanitized palindrome in string
Write a function that determines whether a string is a palindrome after sanitizing it: remove every character that is not alphanumeric (drop punctuation, whitespace, and symbols) and compare letters case-insensitively. Return true if the remaining sequence reads the same forwards and backwards, and false otherwise. An empty result (a string with no alphanumeric characters) is considered a valid palindrome.
Example 1: "A man, a plan, a canal: Panama" -> true (sanitizes to "amanaplanacanalpanama"). Example 2: "race a car" -> false (sanitizes to "raceacar"). Example 3: " " -> true (sanitizes to the empty string).
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.
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.