leetcode-93-复原ip地址
Posted oldby
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode-93-复原ip地址相关的知识,希望对你有一定的参考价值。
题目描述:
方法一:暴力法
class Solution: def restoreIpAddresses(self, s: str) -> List[str]: n = len(s) res = [] # 判读是否满足ip的条件 def helper(tmp): if not tmp or (tmp[0] == "0" and len(tmp) > 1) or int(tmp) > 255: return False return True # 三个循环,把数字分成四份 for i in range(3): for j in range(i + 1, i + 4): for k in range(j + 1, j + 4): if i < n and j < n and k < n: tmp1 = s[:i + 1] tmp2 = s[i + 1:j + 1] tmp3 = s[j + 1:k + 1] tmp4 = s[k + 1:] # print(tmp1, tmp2, tmp3, tmp4) if all(map(helper, [tmp1, tmp2, tmp3, tmp4])): res.append(tmp1 + "." + tmp2 + "." + tmp3 + "." + tmp4) return res
方法二;回溯
class Solution: def restoreIpAddresses(self, s: str) -> List[str]: res = [] n = len(s) def backtrack(i, tmp, flag): if i == n and flag == 0: res.append(tmp[:-1]) return if flag < 0: return for j in range(i, i + 3): if j < n: if i == j and s[j] == "0": backtrack(j + 1, tmp + s[j] + ".", flag - 1) break if 0 < int(s[i:j + 1]) <= 255: backtrack(j + 1, tmp + s[i:j + 1] + ".", flag - 1) backtrack(0, "", 4) return res
以上是关于leetcode-93-复原ip地址的主要内容,如果未能解决你的问题,请参考以下文章
精选力扣500题 第59题 LeetCode 93. 复原 IP 地址c++/java详细题解