[LeetCode] 93. Restore IP Addresses

来源:互联网 发布:恐怖黎明物品数据nga 编辑:程序博客网 时间:2024/06/06 21:42

思路:
可以用一个三层循环嵌套, 也可以用DFS, 我使用的DFS, 因为这个方法有泛化性, 如果被切分出的字段不是四份, 这个算法修改几个参数就够了, 而不需要修改整个代码结构. 算法没什么复杂的, 注意每个字段的合法性判断, 不能数字值大于255, 也不能数字位数多余1还首数字是0.

void dfs(vector<string>& res, string& s, string str, int index, int count) {    if (count == 4 && index == s.length())        return res.push_back(str);    for (int i = 1; i <= 3; i++) {        if (index + 1 > s.length()) break;        string temp = s.substr(index, i);        if (stoi(temp) > 255 || temp[0] == '0' && temp.length() > 1)            continue;        dfs(res, s, str + (count ? "." : "") + temp, index + i, count + 1);    }}vector<string> restoreIpAddresses(string s) {    vector<string> res;    if (s.length() > 12) return res;    string str = "";    dfs(res, s, str, 0, 0);    return res;}
0 0
原创粉丝点击