leetcode 093 —— Restore IP Addresses

来源:互联网 发布:阿里云邮箱设置 编辑:程序博客网 时间:2024/06/05 04:13

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)


思路:回溯法,但是这个题不允许 001 000 的存在,其实已经简化很多了。是我想复杂了。

class Solution {public:vector<string> restoreIpAddresses(string s) {vector<string> res;int n = s.size();if (n<4 || n>12) return res;dfs(0, 0, "", s, res);return res;}void dfs(int level,int count, string path, string &s, vector<string> &res){if (count == 4){if (level == s.size()){res.push_back(path.substr(0,path.size()-1));}return;}for (int i = 1; i <=3&&level+i<=s.size(); i++){if (i>1 && s[level] == '0')continue;if (s2i(s.substr(level, i )) <= 255)            //判断是否合法dfs(level + i , count + 1, path + s.substr(level, i)+'.', s, res);}}inline int s2i(string t){int sum = 0;for (int i = 0; i < t.size(); i++)sum = sum * 10 + t[i] - '0';return sum;}};


0 0
原创粉丝点击