# 复原 IP 地址

<p>给定一个只包含数字的字符串，用以表示一个 IP 地址，返回所有可能从 <code>s</code> 获得的 <strong>有效 IP 地址 </strong>。你可以按任何顺序返回答案。</p><p><strong>有效 IP 地址</strong> 正好由四个整数（每个整数位于 0 到 255 之间组成，且不能含有前导 <code>0</code>），整数之间用 <code>'.'</code> 分隔。</p><p>例如："0.1.2.201" 和 "192.168.1.1" 是 <strong>有效</strong> IP 地址，但是 "0.011.255.245"、"192.168.1.312" 和 "192.168@1.1" 是 <strong>无效</strong> IP 地址。</p><p> </p><p><strong>示例 1：</strong></p><pre><strong>输入：</strong>s = "25525511135"<strong><br />输出：</strong>["255.255.11.135","255.255.111.35"]</pre><p><strong>示例 2：</strong></p><pre><strong>输入：</strong>s = "0000"<strong><br />输出：</strong>["0.0.0.0"]</pre><p><strong>示例 3：</strong></p><pre><strong>输入：</strong>s = "1111"<strong><br />输出：</strong>["1.1.1.1"]</pre><p><strong>示例 4：</strong></p><pre><strong>输入：</strong>s = "010010"<strong><br />输出：</strong>["0.10.0.10","0.100.1.0"]</pre><p><strong>示例 5：</strong></p><pre><strong>输入：</strong>s = "101023"<strong><br />输出：</strong>["1.0.10.23","1.0.102.3","10.1.0.23","10.10.2.3","101.0.2.3"]</pre><p> </p><p><strong>提示：</strong></p><ul>	<li><code>0 <= s.length <= 3000</code></li>	<li><code>s</code> 仅由数字组成</li></ul>

## template

```python
class Solution(object):
	def restoreIpAddresses(self, s):
		ls = len(s)
		if ls == 0 or ls > 12:
			return []
		res = []
		for i in range(1, 4):
			for j in range(1, 4):
				for k in range(1, 4):
					m = ls - i - j - k
					if m > 0 and m <= 3:
						add1 = s[0:i]
						add2 = s[i:i + j]
						add3 = s[i + j:i + j + k]
						add4 = s[i + j + k:]
						if self.isValid(add1) and self.isValid(add2) and \
										self.isValid(add3) and self.isValid(add4):
							res.append(add1 + '.' + add2 + '.' + add3 + '.' + add4)
		return res
	def isValid(self, add):
		if len(add) == 1:
			return True
		if add[0] == '0':
			return False
		if int(add) <= 255:
			return True
		return False
if __name__ == '__main__':
	s = Solution()
	print (s.restoreIpAddresses('25525511135'))
```

## 答案

```python

```

## 选项

### A

```python

```

### B

```python

```

### C

```python

```