class Solution {
public:
vector<string> res;
bool isValid(string s,int start, int end){
if(start>end) return false;
if(s[start]=='0' && start!=end)
return false;
int num=0;
for(int i=start;i<=end;++i){
if(s[i]>'9'&&s[i]<'0')
return false;
num = num*10 + s[i]-'0';
if(num>255)
return false;
}
return true;
}
void dfs(string& s,int startIndex, int pointNum){
if(pointNum==3){
if(isValid(s,startIndex, s.size()-1))
res.push_back(s);
return;
}
for(int i=startIndex;i<s.size();++i){
if(isValid(s,startIndex, i)){
s.insert(s.begin()+i+1,'.');
dfs(s,i+2,pointNum+1);
s.erase(s.begin()+i+1);
}
else return;
}
}
vector<string> restoreIpAddresses(string s) {
if (s.size() < 4 || s.size() > 12) return res; // 算是剪枝了
dfs(s,0,0);
return res;
}
};
93. 复原 IP 地址
于 2023-06-30 23:35:17 首次发布