题目:93. Restore IP Addresses
难度:中等
类型:深搜 字符串
星级:五星推荐
题意:把一个字符串恢复成所有可能的IP地址,注意0不能作为每段的开头。
class Solution {
public:
vector<string> res;
vector<int> temp;
int n;
vector<string> restoreIpAddresses(string s) {
n = s.size();
dfs(s, 0, 0); //当前枚举的位置 已经找到的IP数
return res;
}
void dfs(string& s, int u, int k){
if(u == n){
if(k == 4){
string t = to_string(temp[0]);
for(int i = 1; i < 4; i++) t += "." + to_string(temp[i]);
res.push_back(t);
}
return;
}
if(k > 4) return;
int x = 0, t = 0;
for(int i = u; i < min(u+3, n); i++){
t = t*10 + s[i]-'0';
if(t <= 255){
temp.push_back(t);
dfs(s, i+1, k+1);
temp.pop_back();
}
if(!t) break; //不能以0开头 只能是单独的0 所以和为0要立即结束 172.0.1.1
}
}
};