【LeetCode】93. 復原IP地址 結題報告 (C++)
阿新 • • 發佈:2018-11-11
原題地址:https://leetcode-cn.com/problems/restore-ip-addresses/description/
題目描述:
給定一個只包含數字的字串,復原它並返回所有可能的 IP 地址格式。
示例:
輸入: "25525511135"
輸出: ["255.255.11.135", "255.255.111.35"]
解題方案:
又是一道回溯法的題目,自己還是不能很會解決回溯演算法的題目,遇到稍微麻煩的題目就不知該怎麼下手了,要多加練習呀。。
暴力嘗試1個字元、2個字元、3個字元。。
本題用到了string()函式,之前沒有遇到過這種用法,學到了!!
class Solution { public: vector<string> ans; void dfs(string &s, int index, int num, string tmp) { if ((5 - num) * 3 < s.size() - index) return; if (num == 5) { ans.push_back(tmp); return; } if (s[index] == '0') dfs(s, index + 1, num + 1, tmp + (num == 1 ? "0" : ".0")); else { for (int i = 1; i < 4 && i + index <= s.size(); ++ i) if (i < 3 || string(s, index, i) <= "255") dfs(s, index + i, num + 1, tmp + (num == 1 ? "" : ".") + string(s, index, i)); } } vector<string> restoreIpAddresses(string s) { dfs(s, 0, 1, ""); return ans; } };