【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; } }