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)
}
posted @ 2020-10-03 12:39  Dar1inge  阅读(220)  评论(0)    收藏  举报