数字字符串转化成IP地址_牛客题霸_牛客网 (nowcoder.com)
ip地址是由四段数字组成的数字序列,格式如 "x.x.x.x",其中 x 的范围应当是 [0,255]
class Solution {
public:
vector<string> restoreIpAddresses(string s) {
vector<string> res;
int n = s.length();
//遍历IP的点可能的位置(第一个点)
for (int i = 1; i < 4 && i < n - 2; i++) {
//第二个点的位置
for (int j = i + 1; j < i + 4 && j < n - 1; j++) {
//第三个点的位置
for (int k = j + 1; k < j + 4 && k < n; k++) {
//最后一段剩余数字不能超过3
if (n - k >= 4)
continue;
//从点的位置分段截取
string a = s.substr(0, i);
string b = s.substr(i, j - i);
string c = s.substr(j, k - j);
string d = s.substr(k);
//IP每个数字不大于255
if (stoi(a) > 255 || stoi(b) > 255 || stoi(c) > 255 || stoi(d) > 255)
continue;
//排除前导0的情况
if ((a.length() != 1 && a[0] == '0') || (b.length() != 1 && b[0] == '0') ||
(c.length() != 1 && c[0] == '0') || (d.length() != 1 && d[0] == '0'))
continue;
//组装IP地址
string temp = a + "." + b + "." + c + "." + d;
res.push_back(temp);
}
}
}
return res;
}
};