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; 5 6 for (int i = 0; i < n; i++) { 7 if (s[i] == '.') return s[n - 1] != '0'; 8 } 9 10 return true; 11 } 12 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 } 25 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 };