Given a string containing only digits, restore it by returning all possible valid IP address combinations.
Example:
Input: "25525511135"
Output: ["255.255.11.135", "255.255.111.35"]
考察:string, dfs;
class Solution {
public:
vector<string> restoreIpAddresses(string s) {
if (s.empty())
return {};
vector<string> res;
restoreIpAddressesDFS(s, 0, "", res);
return res;
}
void restoreIpAddressesDFS(string s, int level, string out, vector<string>& res) {
if (level == 4) {
if (s.empty())
res.push_back(out);
}
else {
for (int i = 1; i < 4; i ++) {
if (s.length() < i) // s字符不够
break;
int val = atoi(s.substr(0, i).c_str());
if (val > 255 || i != to_string(val).size()) // 小心前置0
continue;
restoreIpAddressesDFS(s.substr(i), level+1, out+s.substr(0,i)+(level==3 ? "": "."), res);
}
}
}
};