leetcode

Solution to some Leetcode problems written in C++
git clone git://git.dimitrijedobrota.com/leetcode.git
Log | Files | Refs | README | LICENSE

0816.cpp (1184B)


0 class Solution {
1 static bool valid(const string &s) {
2 const int n = size(s);
3 if (n == 1) return true;
4 if (s[0] == '0' && s[1] != '.') return false;
6 for (int i = 0; i < n; i++) {
7 if (s[i] == '.') return s[n - 1] != '0';
8 }
10 return true;
11 }
13 const vector<string> devide(const string &s) const {
14 const int n = size(s);
15 vector<string> res;
16 if (valid(s)) res.push_back(s);
17 string left(1, s[0]);
18 for (int i = 1; i < n; i++) {
19 const string crnt = left + '.' + s.substr(i, n - i);
20 if (valid(crnt)) res.push_back(crnt);
21 left += s[i];
22 }
23 return res;
24 }
26 public:
27 vector<string> ambiguousCoordinates(const string &s) const {
28 const int n = size(s) - 2;
29 vector<string> res;
30 string left;
31 for (int i = 1; i < n; i++) {
32 left += s[i];
33 for (const auto &a : devide(left)) {
34 for (const auto &b : devide(s.substr(i + 1, n - i))) {
35 res.push_back("(" + a + ", " + b + ")");
36 }
37 }
38 }
39 return res;
40 }
41 };