468 Validate IP Address 验证IP地址
详见:https://leetcode.com/problems/validate-ip-address/description/
Java实现:
- class Solution {
- public String validIPAddress(String IP) {
- if (isIpV4(IP)) {
- return "IPv4";
- } else if (isIpV6(IP)) {
- return "IPv6";
- } else {
- return "Neither";
- }
- }
- private boolean isIpV4(String ip) {
- if (ip == null || ip.isEmpty()) {
- return false;
- }
- String[] splits = ip.split("\\.", -1);
- if (splits.length != 4){
- return false;
- }
- for (int i = 0; i < 4; i++) {
- try {
- int val = Integer.parseInt(splits[i], 10);
- if (val < 0 || val > 255){
- return false;
- }
- } catch (Exception e) {
- return false;
- }
- if (splits[i].charAt(0) == '-' || splits[i].charAt(0) == '+'){
- return false;
- }
- if (splits[i].charAt(0) == '0' && splits[i].length() > 1){
- return false;
- }
- }
- return true;
- }
- private boolean isIpV6(String ip) {
- if (ip == null || ip.isEmpty()) {
- return false;
- }
- String[] splits = ip.split(":", - 1);
- if (splits.length != 8){
- return false;
- }
- for (int i = 0; i < 8; i++) {
- try {
- int val = Integer.parseInt(splits[i], 16);
- if (val < 0 || val > 65535){
- return false;
- }
- } catch (Exception e) {
- return false;
- }
- if (splits[i].charAt(0) == '-' || splits[i].charAt(0) == '+'){
- return false;
- }
- if (splits[i].length() > 4){
- return false;
- }
- }
- return true;
- }
- }
C++实现:
- class Solution {
- public:
- string validIPAddress(string IP)
- {
- if(IsIPv4(IP))
- {
- return "IPv4";
- }
- else if(IsIPv6(IP))
- {
- return "IPv6";
- }
- else
- {
- return "Neither";
- }
- }
- private:
- bool IsIPv4(string IP)
- {
- string temp="";
- int count=0;
- int count1=0;
- for(int i=0;i<=IP.length();i++)
- {
- if(IP[i]!='.'&&IP[i]!='\0')
- {
- if(IP[i]<'0'||IP[i]>'9')
- {
- return false;
- }
- temp=temp+IP[i];
- count1++;
- if(count1>=4)
- {
- return false;
- }
- }
- else
- {
- if(temp!=""&&stoi(temp)<256&&stoi(temp)>=0)
- {
- if(temp[0]=='0'&&temp.length()>1)
- {
- return false;
- }
- count++;
- if(count==4)
- {
- return i==IP.length();
- }
- }
- else
- {
- return false;
- }
- temp="";
- count1=0;
- }
- }
- return false;
- }
- bool IsIPv6(string IP)
- {
- string temp="";
- int count=0;
- int count1=0;
- for(int i=0;i<=IP.length();i++)
- {
- if((IP[i]>='0'&&IP[i]<='9')||(IP[i]>='A'&&IP[i]<='F')||(IP[i]>='a'&&IP[i]<='f'))
- {
- count1++;
- if(count1>4)
- {
- return false;
- }
- }
- else if(IP[i]==':'||IP[i]=='\0')
- {
- if(count1==0)
- {
- return false;
- }
- count++;
- count1=0;
- if(count==8)
- {
- return i==IP.length();
- }
- }
- else
- {
- return false;
- }
- }
- return false;
- }
- };
参考:https://blog.csdn.net/starstar1992/article/details/54925098
468 Validate IP Address 验证IP地址的更多相关文章
- [LeetCode] Validate IP Address 验证IP地址
In this problem, your job to write a function to check whether a input string is a valid IPv4 addres ...
- 华东师大OJ:IP Address【IP地址转换】
/*===================================== IP Address Time Limit:1000MS Memory Limit:30000KB Total Subm ...
- [Leetcode] restore ip address 存储IP地址
Given a string containing only digits, restore it by returning all possible valid IP address combina ...
- [LintCode] Restore IP Address 复原IP地址
Given a string containing only digits, restore it by returning all possible valid IP address combina ...
- IP池验证IP是否可用 及scrapy使用 ip池
简单验证 import requests url = "http://www.baidu.com/"proxies = {"http": "http: ...
- Windows Azure Cloud Service (44) 将Cloud Service加入Virtual Network Subnet,并固定Virtual IP Address(VIP)
<Windows Azure Platform 系列文章目录> 在之前的文章中,笔者已经详细介绍了如何将Virtual Machine加入Virtual Network,并且绑定固定的Pr ...
- VIP - virtual IP address
virtual IP address (虚拟 IP 地址)1.是集群的ip地址,一个vip对应多个机器2.与群集关联的唯一 IP 地址 see wiki: A virtual IP address ( ...
- Java实现 LeetCode 468 验证IP地址
468. 验证IP地址 编写一个函数来验证输入的字符串是否是有效的 IPv4 或 IPv6 地址. IPv4 地址由十进制数和点来表示,每个地址包含4个十进制数,其范围为 0 - 255, 用(&qu ...
- 【LeetCode】468. Validate IP Address 解题报告(Python)
[LeetCode]468. Validate IP Address 解题报告(Python) 标签(空格分隔): LeetCode 作者: 负雪明烛 id: fuxuemingzhu 个人博客: h ...
随机推荐
- sqlzoo练习答案--SELECT within SELECT Tutorial
This tutorial looks at how we can use SELECT statements within SELECT statements to perform more com ...
- AIDL/IPC Android AIDL/IPC 进程通信机制——超具体解说及使用方法案例剖析(播放器)
首先引申下AIDL.什么是AIDL呢?IPC? ------ Designing a Remote Interface Using AIDL 通常情况下,我们在同一进程内会使用Binder.Broad ...
- 手把手教你_怎么找android应用的包名和启动activity
自己主动化測试中常常遇到这个问题,关于这个题目,方法众多,咱的目的是找个比較简单靠谱的: 方法一: 先进入cmd窗体,adb shell 后: cd /data/data ls 能够看到包名了吧,缺点 ...
- jsp_类的封装_集合的应用
一.需求分析 做一个jsp页面,动态显示信息表的内容. 1.做一个实体类:StudentInfo(包含4个字段) 2.如图模拟生成3条数据,本质上就是new StudentInfo 3个实例, 每一个 ...
- 嵌入式开发之davinci--- 8148 小站信息
http://zhan.renren.com/tag?value=dm8148#!//more/3602888498051423017 http://zhan.renren.com/dm8148evm ...
- Android实战简易教程-第四十枪(窃听风云之短信监听)
近期在做监听验证码短信自己主动填入的功能,无意间想到了一个短信监听的办法. 免责声明:短信监听本身是一种违法行为,这里仅仅是技术描写叙述.请大家学习技术就可以.(哈哈) 本实例是基于bmob提供的后台 ...
- YTU 1007: Redraiment猜想
1007: Redraiment猜想 时间限制: 1000 Sec 内存限制: 10 MB 提交: 83 解决: 23 题目描述 redraiment在家极度无聊,于是找了张纸开始统计素数的个数. ...
- 如何完成dedecms外部数据库调用|跨数据库数据调用
第1步:打开网站include\taglib文件夹中找到sql.lib.php文件,并直接复制一些此文件出来,并把复制出来的这个文件重命名为mysql.lib.php. 注:mysql.lib.php ...
- 创建cell的三种方式
方式一 注册cell -> 无需为cell绑定标识符 [使用UIViewController完成!] l 1> static NSString * const ID = @"c ...
- 性能-发挥ORACLE分区表
ORACLE分区表发挥性能 http://www.cnblogs.com/zwl715/p/3962837.html 1.1 分区表PARTITION table 在ORACLE里如果遇到特别大的表, ...