zoukankan      html  css  js  c++  java
  • 93. 复原IP地址

    题目

    93. 复原IP地址

    我的思路

    比较明显,递归深搜处理比较方便。设定一个指针指向字符串首,每次可以后移1,2,或3个位置。总共需要后移4次,且刚好滑过整个字符串。同时要保证每次划过的数字在0-255之间即可。

    我的实现

    class Solution {
    public:
        vector<string> result;
        string ss;
        void process(const int length,int pos,int id,string str)
        {
            //cout<<"check"<<pos<<"	"<<id<<"	"<<str<<endl;
            if(pos>length)return;
            if(id>4&&pos==length){str.erase(str.end()-1);result.push_back(str);}
            if((5-id)*3<length-pos||(5-id)>length-pos)return;
            
                str = str + ss[pos++];
                process(length,pos,id+1,str+'.');
                if(ss[pos-1]=='0')return;
                str = str + ss[pos++];
                
                process(length,pos,id+1,str+'.');
                str = str + ss[pos++];
                if(ss[pos-3]-'0'>2||(ss[pos-2]-'0'>5&&ss[pos-3]-'0'==2)||(ss[pos-2]-'0'==5&&ss[pos-3]-'0'==2&&ss[pos-1]-'0'>5))return;
                process(length,pos,id+1,str+'.');
                
            
        }
        vector<string> restoreIpAddresses(string s) {
            
            ss = s;
            vector<string> a;
            if(s.size()<4||s.size()>12)return a;
            int pos = 0;
            int id = 1;
            string str;
            process(s.size(),pos,id,str);
            return result;
    
        }
    };
    /**/

    拓展学习

  • 相关阅读:
    第九周
    第七周.
    第六周.
    第二次作业
    第九周作业
    第八周作业
    第七周作业
    第六周作业
    第五周作业
    统计一行文本的单词个数
  • 原文地址:https://www.cnblogs.com/BoysCryToo/p/13462707.html
Copyright © 2011-2022 走看看