牛客BM85 验证IP地址【中等 字符串 Java/Go/PHP】

题目

在这里插入图片描述在这里插入图片描述

在这里插入图片描述在这里插入图片描述

题目链接:
https://www.nowcoder.com/practice/55fb3c68d08d46119f76ae2df7566880
https://www.lintcode.com/problem/1222/description

思路

直接模拟,注意IPv4,ipv6的条件

Java代码

import java.util.*;public class Solution {/*** 验证IP地址* @param IP string字符串 一个IP地址字符串* @return string字符串*/public String solve (String IP) {String[] arr = IP.split("\\.");String[] arr1 = IP.split(":");if(arr.length ==4){if(checkIPV4(arr)) return "IPv4";}else if(arr1.length==8){if(IP.endsWith(":") && !arr1[arr1.length-1].equals("0")) return "Neither";if(checkIPV6(arr1)) return "IPv6";}return "Neither";}public static boolean checkIPV4(String[] arr){for (String s : arr) {for(int i=0;i<s.length();i++) {int c = s.charAt(i);if(!(c>='0' && c<='9')) return false;}if(Integer.parseInt(s) >255) return false;if(s.startsWith("0")) return false;}return true;}public static boolean checkIPV6(String[] arr){for (String s : arr) {if(s.length() ==0) return false;if(s.length()>4) return false;for(int i=0;i<s.length();i++){int c = s.charAt(i);if(c>'f' && c<='z' || c>'F' && c<='Z') return false;}}return true;}
}

Go代码

package mainimport ("strconv""strings"
)/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可** 验证IP地址* @param IP string字符串 一个IP地址字符串* @return string字符串*/
func solve(IP string) string {// write code herearr := strings.Split(IP, ".")arr1 := strings.Split(IP, ":")if len(arr) == 4 {if checkIPV4(IP, arr) {return "IPv4"}}if len(arr1) == 8 {if checkIPV6(IP, arr1) {return "IPv6"}}return "Neither"
}func checkIPV4(ip string, arr []string) bool {if ip[len(ip)-1] == '.' {return false}for _, s := range arr {if len(s) > 1 && s[0] == '0' {return false}for j := 0; j < len(s); j++ {if !(s[j] >= '0' && s[j] <= '9') {return false}}num, _ := strconv.Atoi(s)if num > 255 {return false}}return true
}
func checkIPV6(ip string, arr []string) bool {sepcnt := 0for i := 0; i < len(ip); i++ {if ip[i] == ':' {sepcnt++}}if sepcnt > 7 {return false}for _, s := range arr {if len(s) == 0 || len(s) > 4 {return false}for i := 0; i < len(s); i++ {c := s[i]if c > 'f' && c <= 'z' || c > 'F' && c <= 'Z' {return false}}}return true
}

PHP代码

<?php/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可** 验证IP地址* @param IP string字符串 一个IP地址字符串* @return string字符串*/
function solve( $IP ) {$arr = explode(".",$IP);$arr1 = explode(":",$IP);if(count($arr) ==4) {if(checkIPv4($IP,$arr)){return "IPv4";}}if(count($arr1) ==8){if(checkIPv6($IP,$arr1)){return "IPv6";}}return "Neither";
}function checkIPv4($IP,$arr){$len = strlen($IP);if($IP[$len-1] == '.') return false;foreach ($arr as $s){$len1= strlen($s);if($len1 >1 && $s[0] =='0') return false;for($j=0;$j<$len1;$j++){if(!($s[$j]>='0' && $s[$j]<='9'))return false;}if(intval($s) > 255) return  false;}return true;
}function checkIPv6($IP,$arr){$sepcnt =0;$n = strlen($IP);for($i=0;$i<$n;$i++){if($IP[$i] ==':')$sepcnt++;}if($sepcnt >7) return false;foreach ($arr as $s){$len1 =strlen($s);if($len1 ==0 || $len1 > 4) return false;for($j=0;$j<$len1;$j++){if($s[$j] >'f' && $s[$j]<='z'|| $s[$j]>'F' && $s[$j]<='Z') return false;}}return true;
} $arr = explode(".",$IP);$arr1 = explode(":",$IP);if(count($arr) ==4) {if(checkIPv4($IP,$arr)){return "IPv4";}}if(count($arr1) ==8){if(checkIPv6($IP,$arr1)){return "IPv6";}}return "Neither";
}function checkIPv4($IP,$arr){$len = strlen($IP);if($IP[$len-1] == '.') return false;foreach ($arr as $s){$len1= strlen($s);if($len1 >1 && $s[0] =='0') return false;for($j=0;$j<$len1;$j++){if(!($s[$j]>='0' && $s[$j]<='9'))return false;}if(intval($s) > 255) return  false;}return true;
}function checkIPv6($IP,$arr){$sepcnt =0;$n = strlen($IP);for($i=0;$i<$n;$i++){if($IP[$i] ==':')$sepcnt++;}if($sepcnt >7) return false;foreach ($arr as $s){$len1 =strlen($s);if($len1 ==0 || $len1 > 4) return false;for($j=0;$j<$len1;$j++){if($s[$j] >'f' && $s[$j]<='z'|| $s[$j]>'F' && $s[$j]<='Z') return false;}}return true;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/20955.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关于IDEA创建Maven一直爆红无法下载的问题

你能看到这我就知道你肯定已经试过了网上的很多方法了&#xff0c;我之前也是&#xff0c;试过了很多一直无法正常下载&#xff0c;我也是找人给 线下看了看解决了&#xff0c;我总结一下从头到尾排除问题&#xff0c;试到最后要是还解决不了你直接私信我&#xff0c;我给你看看…

【TB作品】msp430g2553,读取ADXL345+读取DS18B20

硬件 OLED ADXL345 msp430g2553 ds18b20 功能 //OLED 接线 /* NEW P2.0 CSP2.1 DCP2.2 RESP2.3 D1 SDAP2.4 D0 */ //ADXL345 接线 //只需要接五根线&#xff0c;其余乱七八糟的不用接 //P1.4接SCL //P1.5接SDA //3.3接3.3V //CS接3.3V //GND接GND // //执行到while1之后&a…

路由策略实验1

先把地址全部配通 对R1 对R2 对R4 对R3 对R5 对R6 对R7 然后起路由协议 对R1 对R2 对R3 对R4 对R5 对R6 对R7

C++17之std::void_t

目录 1.std::void_t 的原理 2.std::void_t 的应用 2.1.判断成员存在性 2.1.1.判断嵌套类型定义 2.1.2 判断成员是否存在 2.2 判断表达式是否合法 2.2.1 判断是否支持前置运算符 2.2.3 判断两个类型是否可做加法运算 3.std::void_t 与 std::enable_if 1.std::void_t 的…

NAS的外网访问设置

1.公网IP 2.备案域名 3.DDNS解析 4.光猫桥接路由器拨号上网 5.nginx证书accesskey 我使用在阿里云注册备案的域名&#xff0c;使用阿里云的DNS解析服务&#xff0c;使用阿里云提供的api实现DDNS解析。 在NAS中需要安装DNSSERVER插件并创建解析空间和解析域名。 在阿里云…

猫头虎分享已解决Bug || **Eslint插件安装问题Unable to resolve eslint-plugin-猫头虎

猫头虎分享已解决Bug || **Eslint插件安装问题Unable to resolve eslint-plugin-猫头虎 博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的…

将 py 文件编译成 pyd 文件

文章目录 一、简介1.1、Python中的文件类型&#xff1a;.py .pyc .pyd1.2、基本原理1.2.1、函数详解&#xff1a;Extension() —— 用于定义扩展模块&#xff08;C/C 扩展&#xff09;的类1.2.2、函数详解&#xff1a;setup() —— 用于配置和构建包的函数 二、构建过程2.0、…

百度文心一言API批量多线程写文章软件-key免费无限写

百度文心大模型的两款主力模型ENIRE Speed、ENIRE Lite全面免费&#xff0c;即刻生效。 百度文心大模型的两款主力模型 这意味着&#xff0c;大模型已进入免费时代&#xff01; 据了解&#xff0c;这两款大模型发布于今年 3 月&#xff0c;支持 8K 和 128k 上下文长度。 ER…

Java集合面试题(概述,list,Map)

一个常见的"fail-safe"集合例子是CopyOnWriteArrayList。这个集合在每次修改时都会复制当前的数组&#xff0c;修改操作在新数组上进行&#xff0c;而遍历操作则在旧数组上进行。这样&#xff0c;即使在遍历过程中进行了修改&#xff0c;也不会影响遍历的进行。 插入…

小程序的数据驱动和vue的双向绑定有何异同

小程序的数据驱动和Vue的双向绑定在概念和应用上既有相似之处&#xff0c;也存在明显的差异。以下是它们之间的异同点&#xff1a; 相同点 数据驱动&#xff1a; 小程序和Vue都采用了数据驱动的方式&#xff0c;即将数据作为中心&#xff0c;通过更新数据来驱动视图的渲染。当…

车载诊断内容汇总(培训+视频)

车载诊断内容汇总 我是穿拖鞋的汉子&#xff0c;魔都中坚持长期主义的汽车电子工程师。 老规矩&#xff0c;分享一段喜欢的文字&#xff0c;避免自己成为高知识低文化的工程师&#xff1a; 屏蔽力是信息过载时代一个人的特殊竞争力&#xff0c;任何消耗你的人和事&#xff0c…

搭建USRP收发系统(1)

之前浅浅搭过一次&#xff0c;但是因为uhd、Ubuntu、gnuradio版本的问题&#xff0c;导致usrp断断续续地连接不上。于是打算重新弄一次。实验室里很多小伙伴都在做实验&#xff0c;所以我本次是在windowsUbuntu的双系统的基础上&#xff0c;再加一个Ubuntu系统。 参考安装Ubunt…

pyopengl 立方体 正投影,透视投影

目录 顶点和线的方式 划线的方式实现: 顶点和线的方式 import numpy as np from PyQt5 import QtWidgets from PyQt5.QtCore import Qt from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton from OpenGL.GL import * from OpenGL.GLU import * import sys…

Java大文件上传、分片上传、多文件上传、断点续传、上传文件minio、分片上传minio等解决方案

一、上传说明 文件上传花样百出&#xff0c;根据不同场景使用不同方案进行实现尤为必要。通常开发过程中&#xff0c;文件较小&#xff0c;直接将文件转化为字节流上传到服务器&#xff0c;但是文件较大时&#xff0c;用普通的方法上传&#xff0c;显然效果不是很好&#xff0c…

【Unity脚本】修改游戏对象的活动状态

【知识链】Unity -> Unity脚本 -> 游戏对象 -> 活动状态【摘要】本文介绍了如何通过编辑器和脚本来访问游戏对象的活动状态&#xff0c;并给出具体的场景示例。 文章目录 第一章 引言第二章 在编辑器中设置活动状态2.1. 在编辑器中设置活动状态2.1.1. 停用游戏对象2.…

文件IO(三)

文件IO&#xff08;三&#xff09; 左移右移Linux的man 手册文件IO打开文件操作文件关闭文件 caps lock开灯关灯读取按键文件IO操作目录文件打开目录文件操作目录文件 库动态库和静态库的优缺点创建静态库创建动态库 按下右ctrl键 亮灭灯 左移右移 Linux的man 手册 文件IO 打开…

FJSP:常春藤算法(Ivy algorithm,LVYA)求解柔性作业车间调度问题(FJSP),提供MATLAB代码

详细介绍 FJSP&#xff1a;常春藤算法&#xff08;Ivy algorithm&#xff0c;LVYA&#xff09;求解柔性作业车间调度问题&#xff08;FJSP&#xff09;&#xff0c;提供MATLAB代码-CSDN博客 完整MATLAB代码 FJSP&#xff1a;常春藤算法&#xff08;Ivy algorithm&#xff0c;…

图形学初识--多边形剪裁算法

文章目录 前言正文为什么需要多边形剪裁算法&#xff1f;前置知识二维直线直线方程&#xff1a;距离本质&#xff1a;点和直线距离关系&#xff1a; 三维平面平面方程距离本质&#xff1a;点和直线距离关系&#xff1a; Suntherland hodgman算法基本介绍基本思想二维举例问题描…

最小时间差

首先可以想到&#xff0c;可以计算出任意两个时间之间的差值&#xff0c;然后比较出最小的&#xff0c;不过这种蛮力方法时间复杂度是O(n^2)。而先将时间列表排序&#xff0c;再计算相邻两个时间的差值&#xff0c;就只需要计算n个差值&#xff0c;而排序阶段时间复杂度通常为O…

算法研发流程

作为一名算法工程师&#xff0c;进行算法研究需要遵循系统的方法和步骤。以下是一个可能的流程&#xff1a; 1. 定义问题 明确目标&#xff1a;确定要解决的问题或优化的目标。这可以是提高某个算法的性能、降低计算复杂度、解决某个具体应用中的问题等。理解需求&#xff1a…