93:Restore IP Addresses【回溯】【字符串】
2015-04-17 19:16
246 查看
题目链接:click~
/*题意:给出一串只含数字的字符串,返回所有合法的IP*/
/**
*思路: 对字符串进行分段处理,每段组成的数不能超过255,。将IP地址分为4段
* 每段有三种情况:
* 1)只取一个数字
* 2)取两个数字,第一个数不为0
* 3)取三个数字,第一个数字不为0,且三个数字组成的数小于256
*/
class Solution {
public:
//part表示第几段IP
void restoreIpAddresses(string &s, int start, int part, string ip, vector<string> &res) {
int len = s.size();
//剩下的数字过多
if(len - start > (4-part)*3) return;
//剩下的数字过少
if(len - start < (4-part)) return;
if(start == len && part == 4) {
//将ip中最后一个'.'去掉
res.push_back(ip.substr(0, ip.size()-1));
return;
}
int num = 0;
for(int i = start; i < min(start+3, len); i ++) {
//三种情况
num = num*10 + s[i] - '0';
if(num <= 255) {
ip += s[i];
restoreIpAddresses(s, i+1, part+1, ip+'.', res);
}
//如果第一个是0的话, 只考虑0的情况,不需要考虑0组成的地址
if(num == 0) break;
}
}
vector<string> restoreIpAddresses(string s) {
vector<string> res;
string ip;
restoreIpAddresses(s, 0, 0, ip, res);
return res;
}
};
/*题意:给出一串只含数字的字符串,返回所有合法的IP*/
/**
*思路: 对字符串进行分段处理,每段组成的数不能超过255,。将IP地址分为4段
* 每段有三种情况:
* 1)只取一个数字
* 2)取两个数字,第一个数不为0
* 3)取三个数字,第一个数字不为0,且三个数字组成的数小于256
*/
class Solution {
public:
//part表示第几段IP
void restoreIpAddresses(string &s, int start, int part, string ip, vector<string> &res) {
int len = s.size();
//剩下的数字过多
if(len - start > (4-part)*3) return;
//剩下的数字过少
if(len - start < (4-part)) return;
if(start == len && part == 4) {
//将ip中最后一个'.'去掉
res.push_back(ip.substr(0, ip.size()-1));
return;
}
int num = 0;
for(int i = start; i < min(start+3, len); i ++) {
//三种情况
num = num*10 + s[i] - '0';
if(num <= 255) {
ip += s[i];
restoreIpAddresses(s, i+1, part+1, ip+'.', res);
}
//如果第一个是0的话, 只考虑0的情况,不需要考虑0组成的地址
if(num == 0) break;
}
}
vector<string> restoreIpAddresses(string s) {
vector<string> res;
string ip;
restoreIpAddresses(s, 0, 0, ip, res);
return res;
}
};
相关文章推荐
- [JAVA]LeetCode93 Restore IP Addresses
- LeetCode 93 Restore IP Addresses
- Leetcode(93): Restore IP Addresses
- Restore IP Addresses,将字符串转换成ip地址
- LeetCode之“字符串”:Restore IP Addresses
- leetcode[93]Restore IP Addresses
- [leedcode 93] Restore IP Addresses
- leetcode做题总结,题目Restore IP Addresses 93
- LeetCode 93 Restore IP Addresses
- LeetCode - 93 Restore IP Addresses
- [LeetCode] Restore IP Addresses 回溯
- LeetCode93—Restore IP Addresses
- LeetCode-93-Restore IP Addresses 暴力
- [Leetcode 93, Medium] Restore IP Addresses
- LeetCode 93 Restore IP Addresses
- leetcode-93 Restore IP Addresses
- LeetCode93——Restore IP Addresses
- leetcode[93] Restore IP Addresses
- LeetCode 93 Restore IP Addresses
- LeetCode(93) Restore IP Addresses