leetcodeSolution to some Leetcode problems written in C++ |
git clone git://git.dimitrijedobrota.com/leetcode.git |
Log | Files | Refs | README | LICENSE |
0093.cpp (1296B)
0 class Solution {
1 bool valid(const string &s) {
2 if (s.empty()) return true;
3 return stoi(s) >= 0 && stoi(s) <= 255;
4 }
6 public:
7 vector<string> restoreIpAddresses(string s) {
8 int n = s.size();
10 vector<string> res;
11 string s1, s2, s3, s4;
12 bool e4;
14 s1 = "";
15 for (int i = 0; i < n; i++) {
16 s1 += s[i], s2 = "";
17 if (!valid(s1)) break;
18 for (int j = i + 1; j < n; j++) {
19 s2 += s[j], s3 = "";
20 if (!valid(s2)) break;
21 for (int k = j + 1; k < n; k++) {
22 s3 += s[k], s4 = "";
23 if (!valid(s3)) break;
24 for (int l = k + 1; l < n; l++) {
25 s4 += s[l], e4 = false;
26 if (!valid(s4) || (s4.size() >= 2 && s4.front() == '0')) {
27 e4 = true;
28 break;
29 }
30 }
31 if (!e4 && !s4.empty()) res.push_back(s1 + "." + s2 + "." + s3 + "." + s4);
32 if (s3.front() == '0') break;
33 }
34 if (s2.front() == '0') break;
35 }
36 if (s1.front() == '0') break;
37 }
38 return res;
39 }
40 };