Easy to understand C# solution - Beats 94.74%
Intuition\nThe problem can be approached by splitting the input string into two parts and then generating all possible combinations of valid numbers for each pa
# Intuition\nThe problem can be approached by splitting the input string into two parts and then generating all possible combinations of valid numbers for each part. To generate valid numbers, we iterate through each possible split point and consider all valid integer and fractional parts. Finally, we construct valid coordinates by combining valid numbers from both parts.\n\n# Approach\n1. Remove the parentheses from the input string to get the numeric string.\n2. Iterate through all possible split points in the numeric string.\n3. Generate all possible valid numbers for the left and right parts using the `GenerateValidNumbers` function.\n4. Construct valid coordinates by combining valid numbers from both parts.\n5. Add the valid coordinates to the result list.\n6. Return the list of valid coordinates.\n\n# Complexity\n- Time complexity: O(n^3), where n is the length of the input string. \n  - The overall time complexity is dominated by the nested loops used to iterate through all possible split points and generate valid numbers for each part.\n- Space complexity: O(n^2)\n  - The space complexity is dominated by the result list containing all valid coordinates, which can have a maximum of O(n^2) elements (for all possible combinations of valid numbers).\n\n\n# Code\n```\nusing System;\nusing System.Collections.Generic;\n\npublic class Solution {\n    public IList<string> AmbiguousCoordinates(string s) {\n        IList<string> result = new List<string>();\n        \n        s = s.Substring(1, s.Length - 2); // Remove parentheses\n        \n        for (int i = 1; i < s.Length; i++) {\n            string left = s.Substring(0, i);\n            string right = s.Substring(i);\n            \n            foreach (string x in GenerateValidNumbers(left)) {\n                foreach (string y in GenerateValidNumbers(right)) {\n                    result.Add($"({x}, {y})");\n                }\n            }\n        }\n        \n        return result;\n    }\n    \n    private IList<string> GenerateValidNumbers(string s) {\n        IList<string> numbers = new List<string>();\n        \n        if (s.Length == 1 || !s.StartsWith("0")) { // Single digit or non-zero single digit\n            numbers.Add(s);\n        }\n        \n        for (int i = 1; i < s.Length; i++) {\n            string integerPart = s.Substring(0, i);\n            string fractionPart = s.Substring(i);\n            \n            if ((!integerPart.StartsWith("0") || integerPart == "0") && !fractionPart.EndsWith("0")) { // Avoid leading or trailing zeros\n                numbers.Add($"{integerPart}.{fractionPart}");\n            }\n        }\n        \n        return numbers;\n    }\n}\n\n```
['C#']