| 123456789101112131415161718192021222324252627282930313233343536373839404142 | 
							- package main
 
- func isValidPart(part string) bool {
 
- 	switch len(part) {
 
- 	case 1: // \d
 
- 		return true
 
- 	case 2: // [^0]\d
 
- 		return part[0] != '0'
 
- 	case 3: // 1\d{2} || 2[0-4]\d || 25[1-5]
 
- 		if part[0] != '2' {
 
- 			return part[0] == '1'
 
- 		}
 
- 		return part[1] <= '4' ||
 
- 			(part[1] == '5' && part[2] <= '5')
 
- 	}
 
- 	return false
 
- }
 
- func restoreIpAddresses(s string) []string {
 
- 	result := []string{}
 
- 	strLen := len(s)
 
- 	if strLen < 4 || 12 < strLen {
 
- 		return result
 
- 	}
 
- 	for i := 1; i < 4 && i < strLen-2; i++ {
 
- 		for j := i + 1; j < i+4 && j < strLen-1; j++ {
 
- 			for k := j + 1; k < j+4 && k < strLen; k++ {
 
- 				if isValidPart(s[0:i]) && isValidPart(s[i:j]) &&
 
- 					isValidPart(s[j:k]) && isValidPart(s[k:]) {
 
- 					result = append(result, s[0:i]+"."+s[i:j]+"."+s[j:k]+"."+s[k:])
 
- 				}
 
- 			}
 
- 		}
 
- 	}
 
- 	return result
 
- }
 
- // func main() {
 
- // 	fmt.Println(restoreIpAddresses("25525511135"))
 
- // 	fmt.Println(restoreIpAddresses("0000"))
 
- // 	fmt.Println(restoreIpAddresses("00000"))
 
- // }
 
 
  |