class Solution {
public:
vector<string> restoreIpAddresses(string s) {
vector<string> res;
if (s.length() < 4)
return res;
string tmp;
solve(s, res, tmp, 0, 0);
return res;
}
void solve(string& s, vector<string>& res, string tmp, int part, int index){
if (part == 4 && index == s.length()){
res.push_back(tmp.substr(0, tmp.length() - 1));
return;
}
// 虽然分成了4段,但是并没有用上所有字符,因此不成立
if (part == 4 && index < s.length())
return;
for(int i = index; i < index + 3 && i < s.length(); i++){
string str = s.substr(index, i - index + 1);
if (check(str))
solve(s, res, tmp + str + ".", part + 1, i + 1);
}
}
bool check(string s){
// 确认字段是否符合
if (s.size() > 1 && s[0] == '0') return false;
int res = atoi(s.c_str());
return res <= 255 && res >= 0;
}
};
static int x=[](){
std::ios::sync_with_stdio(false);
cin.tie(NULL);
return 0;
}();
LetCode 93. 复原IP地址
最新推荐文章于 2024-07-15 10:00:00 发布