class Solution {
private:
vector<string> result;
void backtracking(string &s, int index, int pointNum)
{
if(pointNum == 3){
if(isValid(s,index,s.size() - 1)){
result.push_back(s);
}
return;
}
for(int i = index;i<s.size();i++){
if(isValid(s,index,i)){
s.insert(s.begin() + i + 1,'.');
pointNum++;
backtracking(s,i + 2,pointNum);
pointNum--;
s.erase(s.begin() + i + 1);
}else break;
}
}
bool isValid(const 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;
}
public:
vector<string> restoreIpAddresses(string s) {
result.clear();
if(s.size() < 4 || s.size() > 12) return result;
backtracking(s,0,0);
return result;
}
};
力扣93-复原ip地址
最新推荐文章于 2024-10-04 14:10:29 发布