93复原IP地址

虽然很难看,也就是排名30左右水平,但是起码是自己搓出来的,记录一下。。。。

class Solution {
public:
    vector restoreIpAddresses(string s) {
        if(4>s.size()) return vector();
        vector(3,0).swap(dot_pos);
        auto _size = s.size();
        if(4==_size)
        {
            string ret;
            for(auto& ele:s)
            {
                ret.push_back(ele);
                ret.push_back('.');
            }
            ret.pop_back();
            return vector({ret});
        }
        counter=0;
        helper(0,s);
        return vreturn;
    }
    void helper(size_t pos,string &s)
    {
        if(3==counter)
        {
            if(isvalid(s.substr(dot_pos[2],s.size()-dot_pos[2])))
            {
                string tmp = s.substr(0,dot_pos[0]);
                tmp.push_back('.');
                tmp=tmp+s.substr(dot_pos[0],dot_pos[1]-dot_pos[0]);
                tmp.push_back('.');
                tmp=tmp+s.substr(dot_pos[1],dot_pos[2]-dot_pos[1]);
                tmp.push_back('.');
                tmp=tmp+s.substr(dot_pos[2],s.size()-dot_pos[2]);
                vreturn.emplace_back(move(tmp));   
            }
            return;
        }
        for(auto i=1;i<4;i++)
        {
            if(pos+i255) return false;
        return true;
    }
    vector vreturn;
    vector dot_pos;
    int counter;
};

你可能感兴趣的:(93复原IP地址)