# 93 复原 IP 地址

# 题目链接

# 难度:中等

# 思路分析:

编程题,递归

#

#

#

#

#

#

#

#

#

#

#

#

#

#

# 代码:

递归

var restoreIpAddresses = function(s) {
	if (s.length > 12) return []
	let result = []
	fn(s, [], result)
	return result
}
// 递归
function fn(remain, temp, result) {
	// 第四段
	if (temp.length === 3) {
		if (regular(remain)) {
			// 合法即为正确的值
			result.push([...temp, remain].join('.'))
		}
		return
	}
	// 每段长度都可能为1/2/3
	for (let i = 1; i < 4; i++) {
		// 合法才可继续
		if (regular(remain.substr(0, i))) {
			const strArr = [...temp, remain.substr(0, i)] // 字符段
			const str = remain.substr(i) // 剩下的字符串
			fn(str, strArr, result)
		}
	}
}
// 验证合法性
function regular(s) {
	if (!s.length) return false
	return 0 <= +s && +s <= 255 && (s.length > 1 ? !!+s[0] : true)
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

# 鼓励我一下:

觉得还不错的话,给我的项目点个star

# 点个Star支持我一下~