博客
关于我
微软高频面试模拟题: 验证合法的ipv4地址
阅读量:225 次
发布时间:2019-03-01

本文共 1369 字,大约阅读时间需要 4 分钟。

- 给定一个字符串,判断是否是有效的IP地址(提示,有效的IP地址格式是xxx.xxx.xxx.xxx, xxx在0-255之间)(输入不保证都是这种格式,要自己判断,同时001这种是否有效要问面试官)

去除开头的空格

输入:IP = "172.16.254.1"输出:"IPv4"解释:有效的 IPv4 地址,返回 "IPv4"

首先想最直接的,允许使用split函数的思路:

思路: 首先一定要有三个点,如果没有三个点,一定是不合法的。然后就可以用split,将每一部分单独拆分出来,变成四部分的字符串数组。

如果其中字符串的长度大于3或者为0,说明一定不合法。按照规定如果第一位是0,并且长度大于1,并且每个字符串只能是数字,而且值不超过255

def validIPv4(self, IP: str) -> bool:        if IP.count('.')!=3:            return False        nums = IP.split('.')        for x in nums:            if len(x)==0 or len(x)>3:                return False            if x[0]=='0' and len(x)>1 or not x.isdigit() or int(x)>255:                return False        return True

 

纯C字符串解析:

bool judgeIPV4(char* s) {    if (!s) return false;    int digit = -1;    count = 0;    while (*s != '\0') {        if (*s >= '0' && *s <= '9' && digit == -1) {            digit = 0;        }        if (*s >= '0' && *s <= '9' && digit != -1) {            int temp = *s - '0';            digit = digit * 10 + temp;            if (digit > 255) {                return false;            }        }         else if(digit == '.') {            if (digit < 0) {                return false;            }            count += 1;            if (count > 3) return false;            digit = -1;        } else {            return false;        }        s++;    }    if (count != 3 || digit < 0) return false;    return true;}

 

 

 

 

 

转载地址:http://vjqv.baihongyu.com/

你可能感兴趣的文章
Mysql 分页语句 Limit原理
查看>>
MySql 创建函数 Error Code : 1418
查看>>
MySQL 创建新用户及授予权限的完整流程
查看>>
mysql 创建表,不能包含关键字values 以及 表id自增问题
查看>>
mysql 删除日志文件详解
查看>>
mysql 判断表字段是否存在,然后修改
查看>>
MySQL 到底能不能放到 Docker 里跑?
查看>>
mysql 前缀索引 命令_11 | Mysql怎么给字符串字段加索引?
查看>>
MySQL 加锁处理分析
查看>>
mysql 协议的退出命令包及解析
查看>>
mysql 参数 innodb_flush_log_at_trx_commit
查看>>
mysql 取表中分组之后最新一条数据 分组最新数据 分组取最新数据 分组数据 获取每个分类的最新数据
查看>>
MySQL 命令和内置函数
查看>>
mysql 四种存储引擎
查看>>
MySQL 在并发场景下的问题及解决思路
查看>>
MySQL 基础架构
查看>>
MySQL 基础模块的面试题总结
查看>>
MySQL 备份 Xtrabackup
查看>>
mYSQL 外键约束
查看>>
mysql 多个表关联查询查询时间长的问题
查看>>