题目描述:https://leetcode-cn.com/problems/restore-ip-addresses/description/
给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式。
示例:
输入: "25525511135"
输出: ["255.255.11.135", "255.255.111.35"]
class Solution {
public:
bool isok(string s)
{
int N=s.length();
if(N==0||N>3) return false;
else if (N==1||(N==2&&s[0]!='0')) return true;
else if (N==3&&s[0]=='1') return true;
else if (N==3&&s[0]>'2') return false;
else if (N==3&&s[0]=='2')
{
if(s[1]<'5'||s[1]=='5'&&s[2]<='5') return true;
else return false;
}
else return false;
}
vector<string> restoreIpAddresses(string s) {
int N=s.length();
int i,j,k;
string s1,s2,s3,s4;
vector<string> res;
for(i=1; i<N-1; i++)
{
s1=s.substr(0,i);
if(!isok(s1)) continue; //及早判断,剪去不合理的
for(j=i+1; j<N-1; j++)
{
s2=s.substr(i,j-i);
if(!isok(s2)) continue;
for(k=j+1; k<N; k++)
{
s3=s.substr(j,k-j);
if(!isok(s3)) continue;
s4=s.substr(k,N-k);
//cout<<s1+"."+s2+"."+s3+"."+s4<<endl;
if(isok(s4))
{
res.push_back(s1+"."+s2+"."+s3+"."+s4);
}
}
}
}
return res;
}
};