93. Restore IP Addresses

来源:互联网 发布:knockout.js pdf 编辑:程序博客网 时间:2024/05/21 09:05

递归

class Solution {public:    void valid(string s,unordered_set<string>& adds,string add,int cnt,int len)    {        if(cnt>4)            return;        if(cnt==4)        {            if(s!="")                return;            if(adds.find(add)==adds.end()&&add.size()==len+3)                adds.insert(add);        }        string tmp="";        for(int i=1;i<=3&&i<=s.size();i++)        {            tmp=s.substr(0,i);            int dig=atoi(tmp.c_str());            string tmp_add=add;            if(dig>=0&&dig<=255)            {                if(tmp_add=="")                    tmp_add=to_string(dig);                           else                    tmp_add+='.'+to_string(dig);                valid(s.substr(i),adds,tmp_add,cnt+1,len);            }        }    }    vector<string> restoreIpAddresses(string s) {        vector<string> adds;        unordered_set<string> st;        string add;        valid(s,st,add,0,s.size());        for(auto it=st.begin();it!=st.end();it++)            adds.push_back(*it);        return adds;    }};


0 0