A blind man walks into a hardware store to buy a hammer. There are hammers hanging behind the front desk, but obviously the blind man isn't able to see them. And yet a few minutes later, he happily walks out of the store, having just purchased a new hammer.
How did he do it?
He walks up the the front desk where the clerk is working and says "I'd like to buy a hammer."
Two words are anagrams if and only if they contain the exact same letters with the exact same frequency (for example, "name" and "mean" are anagrams, but "red" and "deer" are not).
Given two strings S1 and S2, which each only contain the lowercase letters a through z, write a program to determine if S1 and S2 are anagrams. The program must have a running time of O(n + m), where n and m are the lengths of S1 and S2, respectively, and it must have O(1) (constant) space usage.
First create an array A of length 26, representing the counts of each letter of the alphabet, with each value initialized to 0. Iterate through each character in S1 and add 1 to the corresponding entry in A. Once this iteration is complete, A will contain the counts for the letters in S1. Then, iterate through each character in S2, and subtract 1 from each corresponding entry in A. Now, if the each entry in A is 0, then S1 and S2 are anagrams; otherwise, S1 and S2 aren't anagrams.
Here is pseudocode for the procedure that was described:
def areAnagrams(S1, S2)
A = new Array(26)
for each character in S1
arrayIndex = mapCharacterToNumber(character) //maps "a" to 0, "b" to 1, "c" to 2, etc...
A[arrayIndex] += 1
for each character in S2
arrayIndex = mapCharacterToNumber(character)
A[arrayIndex] -= 1
for (i = 0; i < 26; i++)
if A[i] != 0
This teaser is based on a weird but true story from a few years ago. A complaint was received by the president of a major car company: "This is the fourth time I have written you, and I don't blame you for not answering me because I must sound crazy, but it is a fact that we have a tradition in our family of having ice cream for dessert after dinner each night. Every night after we've eaten, the family votes on which flavor of ice cream we should have and I drive down to the store to get it. I recently purchased a new Pantsmobile from your company and since then my trips to the store have created a problem. You see, every time I buy vanilla ice cream my car won't start. If I get any other kind of ice cream the car starts just fine. I want you to know I'm serious about this question, no matter how silly it sounds: 'What is there about a Pantsmobile that makes it not start when I get vanilla ice cream, and easy to start whenever I get any other kind?'"
The Pantsmobile company President was understandably skeptical about the letter, but he sent an engineer to check it out anyway. He had arranged to meet the man just after dinner time, so the two hopped into the car and drove to the grocery store. The man bought vanilla ice cream that night and, sure enough, after they came back to the car it wouldn't start for several minutes. The engineer returned for three more nights. The first night, the man got chocolate. The car started right away. The second night, he got strawberry and again the car started right up. The third night he bought vanilla and the car failed to start. There was a logical reason why the man's car wouldn't start when he bought vanilla ice cream. What was it?
The man lived in an extremely hot city, and this took place during the summer. Also, the layout of the grocery store was such that it took the man less time to buy vanilla ice cream.
Vanilla ice cream was the most popular flavor and was on display in a little case near the express check out, while the other flavors were in the back of the store and took more time to select and check out. This mattered because the man's car was experiencing vapor lock, which is excess heat boiling the fuel in the fuel line and the resulting air bubbles blocking the flow of fuel until the car has enough time to cool.. When the car was running there was enough pressure to move the bubbles along, but not when the car was trying to start.
Two Japanese people who have never seen each other meet at the New York Japanese Embassy. They decide to have drinks together at a nearby bar. One of them is the father of the other one's son. How is this possible?
The Japanese are husband and wife and both blind since birth.
Romeo and Juliet are found dead on the floor in a bedroom. When they were discovered, there were pieces of glass and some water on the floor. The only furniture in the room is a shelf and a bed. The house is in a remote location, away from everything except for the nearby railroad track. What caused the death of Romeo and Juliet?
Romeo and Juliet are fishies. The rumble of the train knocked the tank off the shelf, it broke and Romeo and Julia did not survive.