您的位置:首页 > 其它

[leetcode] 93.Restore IP Addresses

2015-08-30 16:02 393 查看
题目:

Given a string containing only digits, restore it by returning all possible valid IP address combinations.

For example:

Given “25525511135”,

return [“255.255.11.135”, “255.255.111.35”]. (Order does not matter)

题意:

给定一个字符串,代表了IP地址,现在需要返回所有的合法的IP地址。

思路:

我们知道IP地址可以用点分十进制表示,而每一个点区分开来的是八个bit的数字,八个bit的数字的范围是[0,255],所以比如保证这四个数字每个数字都是在这个范围内,另外需要保证的是不要出现01这种数字,0只能单独作为一个十进制数,或者跟在其他数后面,0不能出现在十进制数的开头,并且这个十进制还超过一位。

以上。

代码如下:

class Solution {
public:
vector<string> restoreIpAddresses(string s) {
vector<string> result;
vector<string> temp;
getIP(result, s, 0, 0, temp, s.length());
return result;
}

void getIP(vector<string>& result, string& s, int i, int j, vector<string>& temp, int strLen) {
if (i == strLen) {
if (j == 4) {
string st = "";
for (int k = 0; k < 3; k++) {
st += temp[k] + ".";
}
st += temp[3];
result.push_back(st);
}
return;
}
else if (j == 4)return;
for (int k = 1; k <= strLen - 3 + j - i; k++) {
if (k > 1 && s[i] == '0')break;
string sub = s.substr(i, k);
if (atoi(sub.c_str()) <= 255) {
temp.push_back(sub);
getIP(result, s, i + k, j + 1, temp, strLen);
temp.pop_back();
}
else break;
}
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: