Java || concise and clear solution
\nclass Solution {\n    public String[] splitMessage(String message, int limit) {\n        int size = message.length();\n        int lenOfIndice = 1, total = 1;
```\nclass Solution {\n    public String[] splitMessage(String message, int limit) {\n        int size = message.length();\n        int lenOfIndice = 1, total = 1;\n        while (size + (3 + len(total)) * total + lenOfIndice > limit * total) {\n            if (3 + len(total) * 2 >= limit) return new String[0];\n            total += 1;\n            lenOfIndice += len(total);\n        }\n            \n        return formStrings(message, limit, total);\n    }\n    private String[] formStrings(String message, int limit, int total) {\n        int index = 0;\n        String[] result = new String[total];\n        for (int i = 1; i <= total; ++i) {\n            String suffix = String.format("<%d/%d>", i, total);\n            // do not exceed the length of the "message" using Math.min()\n            String prefix = message.substring(index, Math.min(index + limit - suffix.length(), message.length()));\n            result[i - 1] = prefix + suffix;\n            index += limit - suffix.length();\n        }\n        return result;\n    }\n    private int len(int number) {\n        return String.valueOf(number).length();\n    }\n\n}\n```
['Java']