Restore IP Addresses
Total Accepted: 57183
Total Submissions: 241109
Difficulty: Medium
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)
Subscribe to see which companies asked this question
思路:
将字符串分成4份(使用3个指针),当4部分都合法时才valid。
c++ code:
class Solution {
public:
vector<string> restoreIpAddresses(string s) {
vector<string> ret;
int len = s.size();
for(int i=1;i<4 && i<len-2;i++) { //第1个分隔点
for(int j=i+1;j<i+4 && j<len-1;j++) { //第2个分隔点
for(int k=j+1;k<j+4 && k<len;k++) { //第3个分隔点
string s1 = s.substr(0,i);
string s2 = s.substr(i,j-i);
string s3 = s.substr(j,k-j);
string s4 = s.substr(k);
if(isLegal(s1) && isLegal(s2) && isLegal(s3) && isLegal(s4)) {
ret.push_back(s1+"."+s2+"."+s3+"."+s4);
}
}
}
}
return ret;
}
// 自定义函数
bool isLegal(string s) {
if(s.size()>3 || s.size()==0 || (s.size()>1 && s[0]=='0') || atoi(s.c_str())>255)
return false;
return true;
}
};