首页 > 代码库 > 093. Restore IP Addresses
093. Restore IP Addresses
1 class Solution { 2 public: 3 vector<string> restoreIpAddresses(string s) { 4 vector<string> res; 5 string current; 6 if (s.size() > 12 || s.size() < 4) return res; 7 else { 8 checkIp(s, res, current, 0, 1); 9 return res;10 }11 }12 private:13 void checkIp(string s, vector<string>& res, string& current, int startPos, int step)14 {15 if (startPos > s.size() - 1) return;16 if (step == 4) {17 if (startPos < s.size() - 3) return;18 else {19 if (isValid(s, startPos, s.size() - 1)) {20 current.append(s, startPos, s.size() - startPos);21 res.push_back(current);22 current.erase(current.size() + startPos - s.size(), s.size() - startPos);23 return;24 }25 }26 }27 else {28 for (int i = 0; i < 3 && startPos + i < s.size(); ++i) {29 if (isValid(s, startPos, startPos + i)) {30 current.append(s, startPos, i + 1);31 current.push_back(‘.‘);32 checkIp(s, res, current, startPos + i + 1, step + 1);33 current.pop_back();34 current.erase(current.size() - i - 1, i + 1);35 }36 }37 }38 }39 40 bool isValid(string s, int left, int right) {41 if (s[left] == ‘0‘ && right > left) return false; // 这里需要判断如果以0开头,则只能有一位042 int num = 0;43 for (int i = left; i <= right; ++i) {44 num *= 10;45 num += s[i] - ‘0‘;46 }47 if (num >= 0 && num < 256) return true;48 else return false;49 }50 };
093. Restore IP Addresses
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。