One interesting problem I read about as I prepare for various technical interviews is the so called Anagram Substring Search problem where it can be boiled down to the question “find all permutations of s within b“.
Naturally, after all my endeavours with Project Euler and Advent of Code, I cast my mind to how I’d solve this in F#, and it turned out easier than I imagined
The trick is that if you sort the characters in both strings alphabetically then you can leverage F#’s structural comparison for arrays to check if the two strings are anagrams. Essentially, you only need to answer the question “do the same characters exist in both strings?”, and sorting both strings the same way lets you achieve that really easily.
Try it Yourself
- CareerCup question for Google
- Question on GeeksForGeeks
- DotNetFiddle script
- All my Project Euler solutions in F#
- All my Advent of Code solutions in F#