此题参考http://blog.csdn.net/u011095253/article/details/9158449
完美的解决方案 cool!!
代码
class Solution {
public:
vector<string> restoreIpAddresses(string s) {
vector<string> result;
if(s.length()<4||s.length()>12)
return result;
string oneIP = "";
restoreIpAddressesHelper(s, 0, result, oneIP);
return result;
}
void restoreIpAddressesHelper(string s, int count, vector<string> &result, string oneIP)
{
if(count==3&&isValid(s))
{
result.push_back(oneIP+s);
return ;
}
for(int i = 1; i <=3&&i<s.length(); ++i)
{
string str = s.substr(0,i);
if(isValid(str))
{
restoreIpAddressesHelper(s.substr(i), count+1, result, oneIP+str+".");
}
}
}
bool isValid(string s)
{
if(s[0]=='0')
return s=="0";
int num =atoi(s.c_str());
return num<=255&&num>0;
}
};