private:
    vector<string> ans;
    vector<string> temp;
public:
    /**
     * 
     * @param s string字符串 
     * @return string字符串vector
     */
    void DFS(int n,int dep,string s){
        if(dep==4){
            if(n==s.size())
            {
                string ss="";
                for(int i=0;i<temp.size();i++){
                    ss+=temp[i];
                    if(i!=temp.size()-1)
                        ss+=".";
                }
                ans.push_back(ss);
            }
            return;
        }else{
            int tt=0;
            string t_s="";
            for(int i=1;i<=3;i++){
                tt=tt*10+s[n+i-1]-'0';
                t_s+=s[n+i-1];
                if(tt>=0&&tt<=255){
                    temp.push_back(t_s);
                    DFS(n+i,dep+1,s);
                    temp.pop_back();
                }
                if(tt==0)
                    break;
            }
        }
    }
    vector<string> restoreIpAddresses(string s) {
        // write code here
        DFS(0,0,s);
        return ans;
    }
};