Splitting uppercase letters based on a dictionary
Your big O is roughly O(N^2) if you consider your dictionary to be static.  

I don't see anything in your solution that I would classify as dynamic programming.  Maybe you could make a DP solution by pre-parsing your dictionary so you don't check substrings multiple times but instead check each letter against each still-matching word.  Some more test cases might turn up some interesting bugs, too.