首页 > 其他分享 >(字符串)03-验证IP地址

(字符串)03-验证IP地址

时间:2023-11-24 22:55:17浏览次数:27  
标签:03 return int word itemArray length IP地址 字符串 false

  1 import java.util.*;
  2 
  3 public class Solution {
  4     /**
  5      * 验证IP地址
  6      * @param IP string字符串 一个IP地址字符串
  7      * @return string字符串
  8      */
  9     public String solve (String IP) {
 10         if (isIPv4(IP)) {
 11             return "IPv4";
 12         } else if (isIPv6(IP)) {
 13             return "IPv6";
 14         }
 15         return "Neither";
 16     }
 17 
 18     boolean isIPv4 (String ip) {
 19         // 分割字符串
 20         if (ip.indexOf('.') == -1) {
 21             return false;
 22         }
 23         String[] itemArray = ip.split("\\.");
 24         // 校验组数量
 25         if (itemArray.length != 4) {
 26             return false;
 27         }
 28         for (int i = 0; i < itemArray.length; i++) {
 29             // 不能缺省
 30             if (itemArray[i].length() < 0 || itemArray[i].length() == 0) {
 31                 return false;
 32             }
 33             // 不能大于255
 34             if (itemArray[i].length() > 3) {
 35                 return false;
 36             }
 37             // 不能以0开头
 38             if (itemArray[i].charAt(0) == '0' && itemArray[i].length() != 1) {
 39                 return false;
 40             }
 41             // 分割字符串每个字符必须为数字
 42             for (int j = 0; j < itemArray[i].length(); j++) {
 43                 char word = itemArray[i].charAt(j);
 44                 if (word < '0' || word > '9') {
 45                     return false;
 46                 }
 47             }
 48             // 转化为数字需要在0-255之间
 49             int num = 0;
 50             for (int j = 0; j < itemArray[i].length(); j++) {
 51                 char word = itemArray[i].charAt(j);
 52                 num = num * 10 + (int)(word - '0');
 53             }
 54             if (num < 0 || num > 255) {
 55                 return false;
 56             }
 57         }
 58         return true;
 59     }
 60 
 61     boolean isIPv6 (String ip) {
 62         // 分割字符串
 63         if (ip.indexOf(':') == -1) {
 64             return false;
 65         }
 66         String[] itemArray = ip.split(":");
 67         // 校验组数量
 68         if (itemArray.length != 8) {
 69             return false;
 70         }
 71         // 不能以冒号开始或结尾
 72         if (ip.startsWith(":") || ip.endsWith(":")) {
 73             return false;
 74         }
 75         for (int i = 0; i < itemArray.length; i++) {
 76             // 每组字符串不能缺省
 77             if (itemArray[i].length() == 0) {
 78                 return false;
 79             }
 80             // 每组字符串不能超过4位
 81             if (itemArray[i].length() > 4) {
 82                 return false;
 83             }
 84             // 每组字符串不能只有0
 85             int zeroCount = 0;
 86             for (int j = 0; j < itemArray[i].length(); j++) {
 87                 char word = itemArray[i].charAt(j);
 88                 if (word == '0') {
 89                     zeroCount ++;
 90                 }
 91             }
 92             if (itemArray[i].charAt(0) == 0 &&
 93                     itemArray[i].length() > 1 &&
 94                     zeroCount == itemArray[i].length()) {
 95                 return false;
 96             }
 97             // 不能出现[0-9][a-f][A-F]以外的字符
 98             for (int j = 0; j < itemArray[i].length(); j++) {
 99                 char word = itemArray[i].charAt(j);
100                 boolean flag = (word >= '0' && word <= '9') ||
101                                (word >= 'a' && word <= 'f') ||
102                                (word >= 'A' && word <= 'F') ;
103                 if (flag == false) {
104                     return false;
105                 }
106             }
107         }
108         return true;
109     }
110 }

 

标签:03,return,int,word,itemArray,length,IP地址,字符串,false
From: https://www.cnblogs.com/StringBuilder/p/17854970.html

相关文章

  • [Codeforces] CF1703F Yet Another Problem About Pairs Satisfying an Inequality
    时间限制\(2s\)|空间限制\(250M\)题目描述给你一个序列$a_1,a_2,\dotsa_n$。请计算出满足下面条件的$(i,j)(1\leqi,j\leqn)$个数。$a_i<i<a_j<j$.输入格式第一行包含一个整数$t$($1\leqt\leq1000$)—测试数据的个数每一个......
  • day03-4垃圾回收机制
    【垃圾回收机制】【一】引入解释器在执行到定义变量的语法时,会申请内存空间来存放变量的值,而内存的容量是有限的,这就涉及到变量值所占用内存空间的回收问题当一个变量值没有用了(简称垃圾)就应该将其占用的内存给回收掉,那什么样的变量值是没有用的呢?单从逻辑层面分析,我们......
  • day03-3变量与常量
    【变量与常量】【一】注释语法【1】什么是注释注释就是对代码的解释,注释内容不会被当成代码参与运行【2】为什么要注释增强代码的可读性(更容易理解代码)【3】如何使用注释代码注释分单行和多行注释单行注释用‘#’,注释内容加在'#'后,可以跟在代码的正上方或者......
  • day03-2PyCharm相关知识补充
    【PyCharm相关知识补充】【一】常用快捷键大全【1】基本编辑快捷键Ctrl+Space:基本的代码完成(类、方法、属性)Ctrl+Alt+Space:快速导入任意类Ctrl+Shift+Enter:语句完成Ctrl+P:参数信息(在方法中调用参数)Ctrl+Q:快速查看文档F1:外部文档Shift+F1:外......
  • day03-1Python相关知识补充
    【Python相关知识补充】【一】PIP换源【1】问题描述在使用Python时,我们经常需要用到pip安装第三方包,在某些情况下,由于网络速度慢或者其他各种原因,pipinstall会非常慢,甚至可能无法完成。在终端窗口使用以下命令进行第三方模块的下载、卸载:pipinstall模块名pipinstall......
  • Codeforces Round 903 (Div. 3)
    CodeforcesRound903(Div.3)A.Don'tTrytoCount大概题意给你两个字符串a,b。a串可进行的操作为将整个a串复制到之前的a串后面(直接用a+a即可),然后看操作多少次可以让b串变为a串的子串如果不能就输出-1。#include<iostream>usingnamespacestd;stringa,b;voidsolve()......
  • 字符串存储
    小结1.一个函数中,我们通常会把几个变量的定义声明放在一起,那么当程序编译时,这几个变量在入栈时也是相连着依次入栈,这就会导致出现有时侯字符串输出错误的情况。2.例如下面那么输出结果将会是a="abcdefgh";b="gh";可见b的值也被更改了。3.字符串a和b相连,a的长度其实只有5,b......
  • 关键字 开发-03 渲染yaml文件中的变量
    前言:引用渲染变量的模板有2个,一个是字符串模板,另一个是Jinja2模板1.字符串模板1.1.1通过字符串格式化方法进行渲染需要渲染的变量:name="dack"age=23x='mynameis%s,myageis%d'%(name,age)print(x)y="mynameis{},myageis{}".format(name,age)......
  • CF685E Travelling Through the Snow Queen's Kingdom
    题意给定一张图,走出当前边的时间为\(i\)。\(q\)次询问,问\(s\)是否能在\(l\tor\)中走到\(t\)。Sol考虑将边从大到小插入图中。注意到当前边只能对起点造成贡献。复杂度\(O(n\times\max\{n,m\})\)Code#include<iostream>#include<algorithm>#include<cstd......
  • error:0308010C:digital envelope routines::unsupported
    执行:npmrunserve 出现:error:0308010C:digitalenveloperoutines::unsupported原因:npm版本升级解决:package.json增加配置"scripts":{"serve":"setNODE_OPTIONS=--openssl-legacy-provider&&vue-cli-serviceserve","b......