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)
Have you met this question in a real interview?
Yes
No
注意:substr 方法 返回一个从指定位置开始,并具有指定长度的子字符串。
class Solution {
bool isValid(string s){
stringstream ss;
int tmp;
ss<<s;
ss>>tmp;
if(s.length()>1&&s[0]=='0') return false;
if(tmp>=0&&tmp<=255) return true;
return false;
}
public:
vector<string> restoreIpAddresses(string s) {
int i,j,p,q,tmp;
int length=s.length();
vector<string> v;
string s1,s2,s3,s4;
for(i=1;i<=3&&i<length;i++){
s1=s.substr(0,i);
if(!isValid(s1)) break;
for(j=1;j<=3&&i+j<length;j++){
s2=s.substr(i,j);
if(!isValid(s2)) break;
for(p=1;p<=3&&i+j+p<length;p++){
s3=s.substr(i+j,p);
if(!isValid(s3)) break;
for(q=1;q<=3&&i+j+p+q<=length;q++){
s4=s.substr(i+j+p,q);
if(!isValid(s4)) break;
if(i+j+p+q==length){
string ans = s1+"."+s2+"."+s3+"."+s4;
v.push_back(ans);
}
}
}
}
}
return v;
}
};