您的位置:首页 > 编程语言 > C语言/C++

Leetcode 93. Restore IP Addresses (Medium) (cpp)

2016-08-22 11:06 337 查看
Leetcode 93. Restore IP Addresses (Medium) (cpp)

Tag: Backtracking, String

Difficulty: Medium

/*

93. Restore IP Addresses (Medium)

Given a string containing only digits, restore it by returning all possible valid IP address combinations.

For example:
Given "25525511135",

return ["255.255.11.135", "255.255.111.35"]. (Order does not matter)

*/
class Solution {
public:
vector<string> restoreIpAddresses(string s) {
vector<string> res;
if (s.length() < 4 || s.length() > 12) return res;
generate(s, 0, 4, res, "");
return res;
}
void generate(string s, int start, int cnt, vector<string>& res, string res_sub) {
if (start == s.length() && cnt == 0) {
res_sub.pop_back();
res.push_back(res_sub);
return;
}
if(s.length() - start > 3 * cnt) return;
for (int i = 0; i + start < s.length() && i < 3; i++) {
if (i == 0) generate(s, start + 1, cnt - 1, res, res_sub + s.substr(start, 1) + ".");
if (i == 1 && s[start] != '0') generate(s, start + 2, cnt - 1, res, res_sub + s.substr(start, 2) + ".");
if (i == 2 && stoi(s.substr(start, 3)) > 99 && stoi(s.substr(start, 3)) < 256) generate(s, start + 3, cnt - 1, res, res_sub + s.substr(start, 3) + ".");
}
}
};

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode cpp