Break out string to positions, also typedef common complex types
Reuse already created vector as result vector
Switch to linked-list based algorithm