Challenge - 5 Problems
Anagram Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate2:00remaining
Output of Sorting-Based Anagram Check
What is the output of this Python code that checks if two words are anagrams by sorting their letters?
DSA Python
def are_anagrams(s1, s2): return sorted(s1) == sorted(s2) print(are_anagrams('listen', 'silent')) print(are_anagrams('hello', 'bello'))
Attempts:
2 left
💡 Hint
Sorting the letters of both words and comparing them checks if they have the same letters.
✗ Incorrect
The function sorts both strings and compares them. 'listen' and 'silent' have the same letters, so True. 'hello' and 'bello' differ, so False.
❓ Predict Output
intermediate2:00remaining
Output of Frequency Count Anagram Check
What is the output of this Python code that checks if two words are anagrams by counting letter frequencies?
DSA Python
from collections import Counter def are_anagrams(s1, s2): return Counter(s1) == Counter(s2) print(are_anagrams('triangle', 'integral')) print(are_anagrams('apple', 'papel'))
Attempts:
2 left
💡 Hint
Counting how many times each letter appears helps check if two words are anagrams.
✗ Incorrect
'triangle' and 'integral' have the same letter counts, so True. 'apple' and 'papel' also have the same counts, so True.
🔧 Debug
advanced2:00remaining
Find the Error in Anagram Check Code
This code tries to check if two strings are anagrams but has a bug. What error does it cause when run?
DSA Python
def are_anagrams(s1, s2): counts = {} for ch in s1: counts[ch] = counts.get(ch, 0) + 1 for ch in s2: counts[ch] = counts.get(ch, 0) - 1 return all(value == 0 for value in counts.values()) print(are_anagrams('abc', 'cab')) print(are_anagrams('abc', 'abb'))
Attempts:
2 left
💡 Hint
The code uses a dictionary to count letters, adding for s1 and subtracting for s2.
✗ Incorrect
The code correctly counts letters and checks if all counts return to zero. 'abc' and 'cab' are anagrams (True). 'abc' and 'abb' are not (False). No error occurs.
🧠 Conceptual
advanced2:00remaining
Which Method is Most Efficient for Large Strings?
For very long strings, which anagram check method is generally the most efficient in terms of time complexity?
Attempts:
2 left
💡 Hint
Counting frequencies can be done in one pass each, avoiding sorting overhead.
✗ Incorrect
Counting frequencies is O(n) time, sorting is O(n log n), comparing each character pair is O(n^2), and recursion checking permutations is factorial time, so frequency counting is best.
❓ Predict Output
expert3:00remaining
Output of Case-Insensitive Anagram Check with Spaces
What is the output of this code that checks if two phrases are anagrams ignoring case and spaces?
DSA Python
def clean_string(s): return ''.join(ch.lower() for ch in s if ch.isalpha()) def are_anagrams(s1, s2): return sorted(clean_string(s1)) == sorted(clean_string(s2)) print(are_anagrams('Dormitory', 'Dirty room')) print(are_anagrams('Conversation', 'Voices rant on'))
Attempts:
2 left
💡 Hint
Removing spaces and ignoring case helps check if phrases are anagrams.
✗ Incorrect
Both phrases have the same letters ignoring spaces and case, so both comparisons return True.