class Solution {
public:
vector<string> result;
vector<string> restoreIpAddresses(string s) {
traverse(s,0,0);
return result;
}
bool isvalid(string s,int start, int end){
if(end>start&&s[start]=='0') return false;
int temp=0;
for(int i=start;i<=end;i++){
temp = temp*10 + s[i]-'0';
if(temp>255) return false;
}
return true;
}
void traverse(string s, int start_index, int point_num){
if(point_num==3){
if(start_index<s.size()&&isvalid(s,start_index,s.size()-1))
result.push_back(s);
}
for(int i=start_index;i<s.size()&&i<start_index+3;i++){
if(isvalid(s,start_index,i)){
s.insert(s.begin()+i+1,'.');
traverse(s,i+2,point_num+1);
s.erase(s.begin()+i+1);
}
}
}
};
刷题记录第九十一天-复原IP地址
最新推荐文章于 2024-11-02 16:28:26 发布
该文章介绍了一个C++类Solution,用于恢复并验证IPv4地址。它包含isvalid函数检查子网的有效性,traverse函数递归地尝试所有可能的子网划分,将结果存储在result向量中。
摘要由CSDN通过智能技术生成