牛客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;我给你看看…

路由策略实验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 的…

猫头虎分享已解决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;也不会影响遍历的进行。 插入…

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

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

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…

C语言实现贪吃蛇小游戏(控制台)

本篇主要内容是使用C语言在Windows环境的控制台中模拟实现经典小游戏贪吃蛇。 一、准备工作 我们要实现的基本功能有&#xff1a; 地图绘制蛇吃食物的功能&#xff08;上、下、左、右方向键控制蛇的动作&#xff09;蛇撞墙死亡蛇撞自身死亡计算得分蛇身加速、减速暂停游戏 …

9-Django项目--验证码操作

目录 templates/login/login.html utils/code.py views/login.py 验证码 生成验证码 code.py 应用验证码 views.py login.html templates/login/login.html {% load static %} <!DOCTYPE html> <html lang"en"> <head><meta charset&q…

PID算法入门

文章目录 122.12.22.3 344.14.24.3 1 e(t) 是偏差 实 和 目u(t) 是运算结果 2 层层叠加 得出完整的离散公式 2.1 kp 越大 系统偏差 减小的越快kp大的时候 会出现过冲现象&#xff1f; 0.5 那个会快他解释过冲 &#xff1a; 0.2的 5分钟正好到了 那0.5的五分钟 升的就比20多 就…

④单细胞学习-cellchat细胞间通讯

目录 1&#xff0c;原理基础 流程 受体配体概念 方法比较 计算原理 2&#xff0c;数据 3&#xff0c;代码运行 1&#xff0c;原理基础 原文学习Inference and analysis of cell-cell communication using CellChat - PMC (nih.gov) GitHub - sqjin/CellChat: R toolk…

在 JavaScript 中实现数据加密与解密:Web Cryptography API 与 CryptoJS详解

在 JavaScript 中&#xff0c;可以使用 Web Cryptography API 或第三方库如 crypto-js 来实现加密和解密。本文将介绍如何使用这两种方法在客户端进行数据的加密和解密。 使用 Web Cryptography API Web Cryptography API 是现代浏览器提供的一个强大、原生的加密 API。它允许…