My Java Solution (39ms)
\n\nclass Solution {\n    public List<String> ambiguousCoordinates(String S) {\n        char[] array = S.toCharArray();\n        int start = 1;\n        int end
```\n\nclass Solution {\n    public List<String> ambiguousCoordinates(String S) {\n        char[] array = S.toCharArray();\n        int start = 1;\n        int end = S.length() - 1; // not include\n        List<String> result = new ArrayList<>();\n        for (int split = start + 1; split < end; split++) {\n            for (int j = start - 1; j < split; j++) {\n                String validLeft = validNum(array, start, split, j);\n                for (int k = split - 1; k < end; k++) {\n                    String validRight = validNum(array, split, end, k);\n                    if (validLeft != null && validRight != null)\n                        result.add("(" + validLeft + ", " + validRight + ")");\n                }\n            }\n        }\n        return result;\n    }\n    \n    private String validNum(char[] str, int start, int end, int point) {\n        if (point == start - 1) { // means no point\n            if (countZero(str, start, end) == str.length)\n                return null;\n            if (end - start > 1 && str[start] == \'0\')\n                return null;\n            \n            return new String(str, start, end - start);\n        } else {\n            if (point == start || point == end)\n                return null;\n            if (point - start > 1 && countZero(str, start, point) == point - start)\n                return null;\n            if (point - start > 1 && str[start] == \'0\')\n                return null;\n            if (countZero(str, point, end) == end - point)\n                return null;\n            if (str[end - 1] == \'0\')\n                return null;\n            \n            return new String(str, start, point - start) + "." + new String(str, point, end - point);\n        }\n    }\n    \n    private int countZero(char[] str, int start, int end) {\n        int count = 0;\n        for (int i = start; i < end; i++) {\n            if (str[i] == \'0\')\n                count++;\n        }\n        return count;\n    }\n}\n\n```
[]