https://medium.com/better-programming/the-technical-interview-guide-to-string-manipulation-92f4c4649cd