Leetcode 93 Restore IP Address
阿新 • • 發佈:2020-10-25
題目介紹
給定只包含數字的字串,判斷是否是合法的IP
地址。
Examples:
Input: "25525511135"
Output: ["255.255.11.135", "255.255.111.35"]
Solution
合法的IP
地址應當是:
- 只由四個部分組成
- 每一部分從
0
到255
- 除了
0
本身,不能包含前導0
可以使用回溯的方法來實現:
class Solution(object): def restoreIpAddresses(self, s): """ :type s: str :rtype: List[str] """ ans = [] def helpfunc(i, res): # 已經有三個部分,剩餘的部分大於3位數,直接返回 if len(res) == 3 and len(s) - i > 3: return # 超出四個部分或者不足以湊夠四個部分,直接返回 if i > len(s) or len(res) > 4: return if len(res) == 4 and i == len(s): ans.append(".".join(res)) return if i < len(s): # 單個數字 helpfunc(i + 1, res + [s[i]]) # 兩位數 if len(s) - i >= 2: if int(s[i]) > 0: helpfunc(i + 2, res + [s[i:i + 2]]) # 三位數 if len(s) - i >= 3: if int(s[i]) != 0 and int(s[i:i + 3]) <= 255: helpfunc(i + 3, res + [s[i:i + 3]]) helpfunc(0, []) return ans