题目详情
给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式。
有效的 IP 地址正好由四个整数(每个整数位于 0 到 255 之间组成),整数之间用 '.'
分隔。
示例:
输入: "25525511135"
输出: ["255.255.11.135", "255.255.111.35"]
——题目难度:中等
-代码如下
class Solution {
private:
vector<string> ans;
public:
vector<string> restoreIpAddresses(string s) {
string ip;
helper(s, 0, ip);
return ans;
}
void helper(string s, int n, string ip) {
if (n == 4) {
if (s.empty()) ans.push_back(ip);
} else {
for(int k = 1; k < 4; k++) {
if (s.size() < k) break;
int val = stoi(s.substr(0, k));
//值大于255或者以0开头不符合IP规定,可以剪枝
if (val > 255 || k != to_string(val).size()) break;
helper(s.substr(k), n + 1, ip + s.substr(0, k) + (n == 3 ? "" : "."));
}
}
return ;
}
};
结果