1108. IP 地址无效化 (将ip地址字符串中的.替换)
问题
给你一个有效的 IPv4 地址 address,返回这个 IP 地址的无效化版本。
所谓无效化 IP 地址,其实就是用 "[.]" 代替了每个 "."。
示例 1:
输入:address = "1.1.1.1"
输出:"1[.]1[.]1[.]1"
示例 2:
输入:address = "255.100.50.0"
输出:"255[.]100[.]50[.]0"
来源:力扣(LeetCode)
解答
C语言
利用strtok()将ip拆分,进行组合。
// 0ms 5.3MB
char * defangIPaddr(char * address){
char *ip1, *ip2, *ip3, *ip4;
char *out = NULL;
out = (char *)malloc(strlen(address) + 7);
memset(out, 0, sizeof(out));
ip1 = strtok(address, ".");
ip2 = strtok(NULL, ".");
ip3 = strtok(NULL, ".");
ip4 = strtok(NULL, ".");
strcpy(out, ip1);
out = strcat(out, "[.]"); // 192[.]
out = strcat(out, ip2);
out = strcat(out, "[.]"); //192[.]168[.]
out = strcat(out, ip3);
out = strcat(out, "[.]"); //192[.]168[.]1[.]
out = strcat(out, ip4);
return out;
}
利用sscanf()和sprintf()
// 0ms 4.9MB
char * defangIPaddr(char * address){
int ip1, ip2, ip3, ip4;
char * out = malloc(strlen(address) + 7);
memset(out, 0, sizeof(out));
sscanf(address, "%d.%d.%d.%d", &ip1, &ip2, &ip3, &ip4);
sprintf(out, "%d[.]%d[.]%d[.]%d", ip1, ip2, ip3, ip4);
return out;
}
golang
直接使用strings中的Replace()函数
func defangIPaddr(address string) string {
return strings.Replace(address, ".", "[.]", -1)
}

浙公网安备 33010602011771号