【ATT】Restore IP Addresses
如何避免多个0的情况。。。。
vector<string> restoreIpAddresses(string s) {
// Note: The Solution object is instantiated only once and is reused by each test case.
vector<string> res;
string tmp;
dfs(0,4,s,tmp,res);
return res;
}
void dfs(int curpos,int cnt,string& s, string tmp,vector<string>& res)
{
if(s.size()-curpos<cnt||s.size()-curpos>3*cnt)
return;
if(curpos==s.size())
{
tmp.resize(tmp.size()-1);
res.push_back(tmp);
return;
}
int num = 0;
for(int i=curpos;i<curpos+3;i++)
{
num = num*10+s[i]-'0';
if(num<=255)
{
tmp += s[i];
dfs(i+1,cnt-1,s,tmp+".",res);
}
if(num==0) //num==0退出,因为在if(num<=255)这个条件中已经计算过了
break;
}
}
浙公网安备 33010602011771号