基本上這種string就是我的罩門, 我超不會處理的
看完李哥的詳解後
我們可以分成幾種case
s = "", 可以得到 {}
s = "0" {s}
s = "0xxx0" {}
s = "0xxx" {0.XXX}
s = "xxx0" {xxx}
s = "xxx" {xxx, x.xx, xx.x}
所以我們拿掉頭尾, 然後用兩段去決定會出現的vector 字串
最後在兩者取一combine
class Solution {
public:
vector<string> ambiguousCoordinates(string s) {
int n = s.size();
vector<string> res;
for(int i = 0; i < n - 2;i++){
vector<string> A = f(s.substr(1, i));
vector<string> B = f(s.substr(i + 1, n - 2 - i));
for(auto &a: A){
for(auto &b: B){
string e = "(" + a + ", "+ b + ")";
res.push_back(e);
}
}
}
return res;
}
vector<string> f(string s){
int n = s.size();
if(n == 0 || (n > 1 && s[0] == '0' && s[n - 1] == '0')){
return {};
}
if(n > 1 && s[0] == '0') return {"0." + s.substr(1)};
if(n == 1 || s[n - 1] == '0') return {s};
vector<string> res = {s};
for(int i = 1; i < n; i++){
res.push_back(s.substr(0, i) + '.' + s.substr(i));
}
return res;
}
};