Simple O(N) code, no tricks, no embedded constants and other shits.
Intuition - Only the total\'s size is unknown.\n Describe your first thoughts on how to solve this problem. \n\n# Approach - As moving forward, we update a valu
# Intuition - Only the total\'s size is unknown.\n<!-- Describe your first thoughts on how to solve this problem. -->\n\n# Approach - As moving forward, we update a value called globalRemover which allows reducing length at back\n<!-- Describe your approach to solving the problem. -->\n\n# Complexity\n- Time complexity: O(N)\n<!-- Add your time complexity here, e.g. $$O(n)$$ -->\n\n- Space complexity: O(N)\n<!-- Add your space complexity here, e.g. $$O(n)$$ -->\n\n# Code\n```\nclass Solution:\n    def splitMessage(self, message: str, limit: int) -> List[str]:\n        globalRemover = 0\n        messageList = []\n        pointer = 0\n        last = 1\n        while(pointer < len(message)):\n            curNumLength = len(str(len(messageList) + 1))\n            if(curNumLength != last):\n                globalRemover += 1\n                last = curNumLength\n                pointer -= len(messageList)\n            rem = limit - 3 - (curNumLength * 2)\n            if rem <= 0: return []\n            messageList.append([rem, 3, curNumLength])\n            pointer += rem\n        \n        result = []\n        lastPointer = 0\n        lenMess = len(messageList)\n        for ind, messLen in enumerate(messageList):\n            start = lastPointer\n            end = start + (messLen[0] - (globalRemover - len(str(ind + 1)) + 1))\n            mess = message[start: end]\n            other = "<" + str(ind + 1) + "/" + str(lenMess) + ">"\n            result.append(mess+other)\n            lastPointer = end\n        return result\n\n```
['Python3']