[Leetcode]Restore IP Addresses

来源:互联网 发布:算法第四版 豆瓣 编辑:程序博客网 时间:2024/06/16 15:16

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)

class Solution {public:    /*algorithm , DFS       each ip address is in 0-255       so we just check whether this digit string can be separated into 4 digits        and each digit meet the ip address    */    void dfs(vector<string>&result,string ip,string &s,int start,int count){         if(count==4)//found         {             if(start == s.size())                result.push_back(ip);             return;         }         for(int len = 1;len <= 3 && start+len-1 < s.size();len++){             if(len > 1&&s[start]=='0')continue; //skip 01 011 such scenario             string digit = s.substr(start,len);             if(atoi(digit.c_str()) > 255)continue; //invalid ip addr             dfs(result,ip==""?digit:ip+"."+digit,s,start+len,count+1);         }    }    vector<string> restoreIpAddresses(string s) {            vector<string>result;                        dfs(result,"",s,0,0);            return result;            }};



0 0
原创粉丝点击