小筆記
Approach先把它分成兩部份後利用check()各自排列，因為不可以有00.1,1.10等情況所以利用條件事來規避，等兩部分各自排列完成後再利用雙for迴圈來做最後一次排列Code

# Approach
<!-- Describe your approach to solving the problem. -->
先把它分成兩部份後利用check()各自排列，因為不可以有00.1,1.10等情況所以利用條件事來規避，等兩部分各自排列完成後再利用雙for迴圈來做最後一次排列

# Code
```cpp []
class Solution {
public:
    vector<string> ambiguousCoordinates(string s) {
        vector<string> ans;

        // 移除括号
        s.erase(0, 1);          // 删除第一个字符 '('
        s.erase(s.size() - 1);  // 删除最后一个字符 ')'

        int len = s.length();
        // 遍历分割点，将字符串分为两部分
        for (int i = 1; i < len; i++) {
            string n1 = s.substr(0, i);   // 左部分
            string n2 = s.substr(i);     // 右部分

            // 检查左右两部分的可能坐标形式
            vector<string> part1 = check(n1);
            vector<string> part2 = check(n2);

            // 组合所有合法的坐标形式
            for (const string& p1 : part1) {
                for (const string& p2 : part2) {
                    ans.push_back("(" + p1 + ", " + p2 + ")");
                }
            }
        }

        return ans;
    }

private:
    // 检查字符串是否可以形成合法的数值，并返回所有可能的形式
    vector<string> check(const string& s) {
        vector<string> results;

        // 单一数字直接合法
        if (s.length() == 1 || s[0] != '0') {
            results.push_back(s);
        }

        // 添加小数点的合法形式
        for (int i = 1; i < s.length(); i++) {
            string left = s.substr(0, i);
            string right = s.substr(i);

            if (left.length() > 1 && left[0] == '0') continue;
            // 检查右部分是否合法
            if (right.back() == '0') continue;
            // 添加合法的小数形式
            results.push_back(left + "." + right);
        }

        return results;
    }
};

```
['C++']