码迷,mamicode.com
首页 > 其他好文 > 详细

leetcode || 93、 Restore IP Addresses

时间:2015-04-15 17:03:24      阅读:91      评论:0      收藏:0      [点我收藏+]

标签:leetcode   string   ip   dfs   回溯法   

problem:

Given a string containing only digits, restore it by returning all possible valid IP address combinations.

For example:
Given "25525511135",

return ["255.255.11.135", "255.255.111.35"]. (Order does not matter)

Hide Tags
 Backtracking String
题意:给定一个纯数字的字符串,输出其满足IP格式要求的IP地址

thinking:

(1)IP格式要求:4段,每段位数最多3位,数值0~255,最少1位,1位可以为0,但是2 、3位时不能以0开头

(2)要输出IP,所以采用DFS深搜,深搜步数是固定的4步,每次可以获取字符串的1~3位来搜索。


code:

class Solution {
private:
    vector<string> ret;
public:
    vector<string> restoreIpAddresses(string s) {        int n=s.size();
        string str;
        dfs(1,0,0,n,s,str);
        dfs(1,0,1,n,s,str);
        dfs(1,0,2,n,s,str);
        return ret;

    }
protected:
    void dfs(int step, int start, int end, int size,string s, string str)
    {
        if(end>=size)
            return;
        if(step==4)
        {
            if(end==size-1)
            {
                string tmp=s.substr(start,end-start+1);
                if(check(tmp))
                    ret.push_back(str+tmp);
            }
            return;
        }
            string tmp=s.substr(start,end-start+1);
            if(check(tmp))
            {
                str=str+tmp+".";
                dfs(step+1,end+1,end+1,size,s,str);
                dfs(step+1,end+1,end+2,size,s,str);
                dfs(step+1,end+1,end+3,size,s,str);
            }

    }
bool check(string &str)
    {
        int n=str.size();
        if(n<1 || n>3)
            return false;
        if(n==1)
                return true;
        if(n==2)
        {
            if(str.at(0)=='0')
                return false;
            else
                return true;
        }
        if(n==3)
        {
            if(str.at(0)=='0')
                return false;
            if(str>string("255"))
                return false;
            else
                return true;
        }

    }
};


leetcode || 93、 Restore IP Addresses

标签:leetcode   string   ip   dfs   回溯法   

原文地址:http://blog.csdn.net/hustyangju/article/details/45061655

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!