| 123456789101112131415161718192021222324252627282930313233343536373839404142 | package mainfunc 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"))// }
 |