class Solution {
public:
vector<string>ans;
bool isvalid(string s,int star,int end){
if(star>end)return false;
int num=0;
if(s[star]=='0'&&star!=end)return false;
for(int i=star;i<=end;i++){
if(s[i]>='0'&&s[i]<='9'){
num=num*10+(s[i]-'0');
}else return false;
if(num>255)return false;
}
return true;
}
void dfs(int startidx,string &s,int pointNum){
if(pointNum==3){
if(isvalid(s,startidx,s.size()-1)){
ans.push_back(s);
}return;
}
for(int i=startidx;i<s.size();i++){
if(isvalid(s,startidx,i)){
s.insert(s.begin()+i+1,'.');
pointNum+=1;
dfs(i+2,s,pointNum);
pointNum-=1;
s.erase(s.begin()+i+1);
}else break;
}
}
vector<string> restoreIpAddresses(string s) {
dfs(0,s,0);
return ans;
}
};
93. 复原 IP 地址
最新推荐文章于 2024-08-09 20:36:57 发布