AAlgoLoopSpaced repetition for LeetCode
MEDIUMBacktrackingLeetCode ↗

Restore IP Addresses

The key idea

A valid address has exactly 3 dots splitting the string into 4 parts. A part is valid only when it is 1 to 3 digits, has no leading zero (unless it is exactly "0"), and its number is at most 255. Try every dot placement, but prune a branch the moment a part breaks a rule.

Problem

A valid IP address consists of exactly four integers separated by single dots. Each integer is between 0 and 255 (inclusive) and cannot have leading zeros.

For example, "0.1.2.201" and "192.168.1.1" are valid, but "0.011.255.245", "192.168.1.312" and "[email protected]" are not.

Given a string s containing only digits, return all possible valid IP addresses that can be formed by inserting dots into s. You are not allowed to reorder or remove any digits in s. You may return the valid IP addresses in any order.

Constraints

Examples

Input: s = "25525511135" Output: ["255.255.11.135","255.255.111.35"]
Input: s = "0000" Output: ["0.0.0.0"]
Input: s = "101023" Output: ["1.0.10.23","1.0.102.3","10.1.0.23","10.10.2.3","101.0.2.3"]

Complexity

Time: O(1) Space: O(1)

See the full solution

410310
Step-by-step visualization
Start free →

More Backtracking problems