What's the runtime complexity of this algorithm for breaking up string into words?
The running time is polynomial with memoization.  If the original input string has $n$ characters, then there are only $O(n)$ possible suffixes of the original string, the function is only called on a suffix of the original string, and (ignoring recursive calls) the time to execute the function is polynomial; so the total running time with memoization is polynomial.