列表

详情


HJ90. 合法IP

描述

IPV4地址可以用一个32位无符号整数来表示,一般用点分方式来显示,点将IP地址分成4个部分,每个部分为8位,表示成一个无符号整数(因此正号不需要出现),如10.137.17.1,是我们非常熟悉的IP地址,一个IP地址串中没有空格出现(因为要表示成一个32数字)。

现在需要你用程序来判断IP是否合法。

数据范围:数据组数:
进阶:时间复杂度:,空间复杂度:


输入描述

输入一个ip地址,保证不包含空格

输出描述

返回判断的结果YES or NO

示例1

输入:

255.255.255.1000

输出:

NO

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C 解法, 执行用时: 1ms, 内存消耗: 332KB, 提交时间: 2021-09-09

#include "stdio.h"
#include "string.h"

typedef unsigned int uint32;

int main()
{
    uint32 a[5] = {0};
    int fail;
    while(scanf("%d", &a[0]) != EOF)
    {
        fail = 0;
        for(int i=1; i<4; i++)
        {
            getchar();//读走‘.’
            scanf("%d", &a[i]);
        }
        for(int i=0; i<4; i++)
        {
            if(a[i] > 255)
                fail = 1;
        }
        printf("%s\n", (fail? "NO" : "YES"));
    }
    return 0;
}

C 解法, 执行用时: 1ms, 内存消耗: 344KB, 提交时间: 2021-09-08

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main() {
    char input[15];
    
    while (scanf("%s", input) != EOF) {
        char *ptr = strtok(input, ".");
        int valid = 1;
        
        while (ptr != NULL) {
            int section = atoi(ptr);
            
            if (section < 0 || section > 255) {
                valid = 0;
            }
            
            ptr = strtok(NULL, ".");
        }
        
        printf("%s\n", valid ? "YES" : "NO");
    }
    
    
    return 0;
}

上一题