详见:https://leetcode.com/problems/validate-ip-address/description/

Java实现:

  1. class Solution {
  2. public String validIPAddress(String IP) {
  3. if (isIpV4(IP)) {
  4. return "IPv4";
  5. } else if (isIpV6(IP)) {
  6. return "IPv6";
  7. } else {
  8. return "Neither";
  9. }
  10. }
  11. private boolean isIpV4(String ip) {
  12. if (ip == null || ip.isEmpty()) {
  13. return false;
  14. }
  15. String[] splits = ip.split("\\.", -1);
  16. if (splits.length != 4){
  17. return false;
  18. }
  19. for (int i = 0; i < 4; i++) {
  20. try {
  21. int val = Integer.parseInt(splits[i], 10);
  22. if (val < 0 || val > 255){
  23. return false;
  24. }
  25. } catch (Exception e) {
  26. return false;
  27. }
  28. if (splits[i].charAt(0) == '-' || splits[i].charAt(0) == '+'){
  29. return false;
  30. }
  31. if (splits[i].charAt(0) == '0' && splits[i].length() > 1){
  32. return false;
  33. }
  34. }
  35. return true;
  36. }
  37. private boolean isIpV6(String ip) {
  38. if (ip == null || ip.isEmpty()) {
  39. return false;
  40. }
  41. String[] splits = ip.split(":", - 1);
  42. if (splits.length != 8){
  43. return false;
  44. }
  45. for (int i = 0; i < 8; i++) {
  46. try {
  47. int val = Integer.parseInt(splits[i], 16);
  48. if (val < 0 || val > 65535){
  49. return false;
  50. }
  51. } catch (Exception e) {
  52. return false;
  53. }
  54. if (splits[i].charAt(0) == '-' || splits[i].charAt(0) == '+'){
  55. return false;
  56. }
  57. if (splits[i].length() > 4){
  58. return false;
  59. }
  60. }
  61. return true;
  62. }
  63. }

C++实现:

  1. class Solution {
  2. public:
  3. string validIPAddress(string IP)
  4. {
  5.  
  6. if(IsIPv4(IP))
  7. {
  8. return "IPv4";
  9. }
  10. else if(IsIPv6(IP))
  11. {
  12. return "IPv6";
  13. }
  14. else
  15. {
  16. return "Neither";
  17. }
  18. }
  19.  
  20. private:
  21. bool IsIPv4(string IP)
  22. {
  23. string temp="";
  24. int count=0;
  25. int count1=0;
  26. for(int i=0;i<=IP.length();i++)
  27. {
  28. if(IP[i]!='.'&&IP[i]!='\0')
  29. {
  30. if(IP[i]<'0'||IP[i]>'9')
  31. {
  32. return false;
  33. }
  34. temp=temp+IP[i];
  35. count1++;
  36. if(count1>=4)
  37. {
  38. return false;
  39. }
  40. }
  41. else
  42. {
  43. if(temp!=""&&stoi(temp)<256&&stoi(temp)>=0)
  44. {
  45. if(temp[0]=='0'&&temp.length()>1)
  46. {
  47. return false;
  48. }
  49. count++;
  50. if(count==4)
  51. {
  52. return i==IP.length();
  53. }
  54. }
  55. else
  56. {
  57. return false;
  58. }
  59. temp="";
  60. count1=0;
  61. }
  62. }
  63. return false;
  64. }
  65. bool IsIPv6(string IP)
  66. {
  67. string temp="";
  68. int count=0;
  69. int count1=0;
  70. for(int i=0;i<=IP.length();i++)
  71. {
  72. if((IP[i]>='0'&&IP[i]<='9')||(IP[i]>='A'&&IP[i]<='F')||(IP[i]>='a'&&IP[i]<='f'))
  73. {
  74. count1++;
  75. if(count1>4)
  76. {
  77. return false;
  78. }
  79. }
  80. else if(IP[i]==':'||IP[i]=='\0')
  81. {
  82. if(count1==0)
  83. {
  84. return false;
  85. }
  86. count++;
  87. count1=0;
  88. if(count==8)
  89. {
  90. return i==IP.length();
  91. }
  92. }
  93. else
  94. {
  95. return false;
  96. }
  97.  
  98. }
  99. return false;
  100. }
  101.  
  102. };

参考:https://blog.csdn.net/starstar1992/article/details/54925098

468 Validate IP Address 验证IP地址的更多相关文章

  1. [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 ...

  2. 华东师大OJ:IP Address【IP地址转换】

    /*===================================== IP Address Time Limit:1000MS Memory Limit:30000KB Total Subm ...

  3. [Leetcode] restore ip address 存储IP地址

    Given a string containing only digits, restore it by returning all possible valid IP address combina ...

  4. [LintCode] Restore IP Address 复原IP地址

    Given a string containing only digits, restore it by returning all possible valid IP address combina ...

  5. IP池验证IP是否可用 及scrapy使用 ip池

    简单验证 import requests url = "http://www.baidu.com/"proxies = {"http": "http: ...

  6. Windows Azure Cloud Service (44) 将Cloud Service加入Virtual Network Subnet,并固定Virtual IP Address(VIP)

    <Windows Azure Platform 系列文章目录> 在之前的文章中,笔者已经详细介绍了如何将Virtual Machine加入Virtual Network,并且绑定固定的Pr ...

  7. VIP - virtual IP address

    virtual IP address (虚拟 IP 地址)1.是集群的ip地址,一个vip对应多个机器2.与群集关联的唯一 IP 地址 see wiki: A virtual IP address ( ...

  8. Java实现 LeetCode 468 验证IP地址

    468. 验证IP地址 编写一个函数来验证输入的字符串是否是有效的 IPv4 或 IPv6 地址. IPv4 地址由十进制数和点来表示,每个地址包含4个十进制数,其范围为 0 - 255, 用(&qu ...

  9. 【LeetCode】468. Validate IP Address 解题报告(Python)

    [LeetCode]468. Validate IP Address 解题报告(Python) 标签(空格分隔): LeetCode 作者: 负雪明烛 id: fuxuemingzhu 个人博客: h ...

随机推荐

  1. sqlzoo练习答案--SELECT within SELECT Tutorial

    This tutorial looks at how we can use SELECT statements within SELECT statements to perform more com ...

  2. AIDL/IPC Android AIDL/IPC 进程通信机制——超具体解说及使用方法案例剖析(播放器)

    首先引申下AIDL.什么是AIDL呢?IPC? ------ Designing a Remote Interface Using AIDL 通常情况下,我们在同一进程内会使用Binder.Broad ...

  3. 手把手教你_怎么找android应用的包名和启动activity

    自己主动化測试中常常遇到这个问题,关于这个题目,方法众多,咱的目的是找个比較简单靠谱的: 方法一: 先进入cmd窗体,adb shell 后: cd /data/data ls 能够看到包名了吧,缺点 ...

  4. jsp_类的封装_集合的应用

    一.需求分析 做一个jsp页面,动态显示信息表的内容. 1.做一个实体类:StudentInfo(包含4个字段) 2.如图模拟生成3条数据,本质上就是new StudentInfo 3个实例, 每一个 ...

  5. 嵌入式开发之davinci--- 8148 小站信息

    http://zhan.renren.com/tag?value=dm8148#!//more/3602888498051423017 http://zhan.renren.com/dm8148evm ...

  6. Android实战简易教程-第四十枪(窃听风云之短信监听)

    近期在做监听验证码短信自己主动填入的功能,无意间想到了一个短信监听的办法. 免责声明:短信监听本身是一种违法行为,这里仅仅是技术描写叙述.请大家学习技术就可以.(哈哈) 本实例是基于bmob提供的后台 ...

  7. YTU 1007: Redraiment猜想

    1007: Redraiment猜想 时间限制: 1000 Sec  内存限制: 10 MB 提交: 83  解决: 23 题目描述 redraiment在家极度无聊,于是找了张纸开始统计素数的个数. ...

  8. 如何完成dedecms外部数据库调用|跨数据库数据调用

    第1步:打开网站include\taglib文件夹中找到sql.lib.php文件,并直接复制一些此文件出来,并把复制出来的这个文件重命名为mysql.lib.php. 注:mysql.lib.php ...

  9. 创建cell的三种方式

    方式一 注册cell -> 无需为cell绑定标识符 [使用UIViewController完成!] l  1> static NSString * const ID = @"c ...

  10. 性能-发挥ORACLE分区表

    ORACLE分区表发挥性能 http://www.cnblogs.com/zwl715/p/3962837.html 1.1 分区表PARTITION table 在ORACLE里如果遇到特别大的表, ...