当前位置: 首页 > news >正文

力扣468 验证IP地址

在这里插入图片描述
ipv4地址:1.必须是四个非空子串
2.每个非空子串不含前导零
3.子串里字符只能是0~255
ipv6地址:1.必须是八个非空子串
2。每段非空串得长度是否在1~4之间,且不含0-9,a-f,A-F之外得字符。
3.同时0-9也不允许含前导零

class Solution {
public:string validIPAddress(string queryIP) {vector<string> ipv4;vector<string> ipv6;char v4='.';char v6=':';if(queryIP.size()==0) return "Neither";char c=queryIP[queryIP.size()-1];if(c==v4||c==v6) return "Neither";//如果地址字符串末尾是:or. 那肯定不是split(queryIP,ipv4,v4);split(queryIP,ipv6,v6);if(IsIPv4(ipv4)) return "IPv4";IsIPv6(ipv6);if(IsIPv6(ipv6)) return "IPv6";return "Neither";}
private:bool IsIPv4(vector<string> &ip){if(ip.size()!=4) return false;for(auto subip:ip){if(subip[0]=='0'&&subip.size()>1||subip.size()>3||subip.empty()) return false;//一定要判空subip.empty()不然底下stoi会报错for(char c:subip){if(c<'0'||c>'9') return false;//先判断每个是不是数字}int subipint=stoi(subip);if(subipint<0||subipint>255) return false;//再判断数字的范围}return true;}bool IsIPv6(vector<string> &ip){if(ip.size()!=8) return false;//首先是不是八个子串for(auto subip:ip){int len=subip.size();if(len<=0||len>=5) return false;//八个子串的长度是不是1~4for(int i=0;i<subip.size();i++){if(subip[i]<='f'&&subip[i]>='a'||subip[i]<='F'&&subip[i]>='A'||subip[i]<='9'&&subip[i]>='0') continue;else return false;// if(subip[i]<'0'||subip[i]>'9'&&subip[i]<'A'||subip[i]>'F'&&subip[i]<'a'||subip[i]>'f') return false;}}return true;}void split(string s,vector<string>&ip,char c){//    int flag=0,len=s.size();// if(s[len-1]==c) flag=1;//如果ip地址的最末尾是'.'或者是":",那肯定就不是ip地址s+=c;for(int i=0;i<s.size();i++){   int j=i;string item;while(s[j]!=c) item+=s[j++];i=j;ip.push_back(item);}}
};

答案 但是内存消耗不容乐观
其中出现的几个问题总结一一下,第一个是spilt函数截取字符串的问题。
ipv4:1.子字符串为4个,2.子字符串不为空,子字符串的长度不能大于3(即数字在1-3个之间),子字符串不含前导零 3.子字符串的每个字符必须是数字,4.子字符串在0~255之间(先使用stoi()转为int)
ipv6:1.子字符串为8个 2.子字符串的长度必须要在1-4之间(不能<1不能>5) 3.子字符串的字符必须在0-9,a-f,A-F之间

相关文章:

力扣468 验证IP地址

ipv4地址&#xff1a;1.必须是四个非空子串 2.每个非空子串不含前导零 3.子串里字符只能是0~255 ipv6地址&#xff1a;1.必须是八个非空子串 2。每段非空串得长度是否在1~4之间&#xff0c;且不含0-9&#xff0c;a-f&#xff0c;A-F之外得字符。 3.同时0-9也不允许含前导零 cl…...

前端静态登录页面实现

<template> <!-- <el-button type="primary" @click="handleLogin">测试登录</el-button>--> <!-- <el-button type="danger" @click="handleUserList">测试获取用户请求</el-button>-->…...

华为数通HCIA-网络参考模型(TCP/IP)

网络通信模式 作用&#xff1a;指导网络设备的通信&#xff1b; OSI七层模型&#xff1a; 7.应用层&#xff1a;由应用层协议&#xff08;http、FTP、Telnet.&#xff09;为应用程序产生对应的数据&#xff1b; 6.表示层&#xff1a;将应用层产生的数据转换成网络设备看得懂…...

java快速生成数据库表文档(HTML、DOC、MD)

在企业级开发中、我们经常会有编写数据库表结构文档的时间付出&#xff0c;关于数据库表结构文档状态&#xff1a;要么没有、要么有、但都是手写、后期运维开发&#xff0c;需要手动进行维护到文档中&#xff0c;很是繁琐&#xff0c;这里推荐一个开源项目&#xff1a;screw gi…...

Dojo学习和常用知识

目录 一、Dojo 的基本概念二、Dojo 的组件和模板三、Dojo 的应用场景四、Dojo 的未来发展五、学习 Dojo 的大纲和建议&#xff1a;六、Dojo 代码示例&#xff1a; Dojo 是一个流行的 JavaScript 库&#xff0c;用于开发 Web 应用程序。它提供了许多功能&#xff0c;如 DOM 操作…...

媒体查询详解

引言 媒体查询是 CSS3 的一个新的技术&#xff0c;它使我们可以针对不同的设备&#xff08;或者说&#xff0c;不同的屏幕尺寸和分辨率&#xff09;来应用不同的样式。 媒体查询包含一个媒体类型和至少一个使用宽度、高度、颜色等条件限制的表达式。CSS 用于桌面电脑的屏幕可…...

华为数通HCIP-IGMP(网络组管理协议)

IGMP&#xff08;网络组管理协议&#xff09; 作用&#xff1a;维护、管理最后一跳路由器以及组播接收者之间的关系&#xff1b; 应用&#xff1a;最后一跳路由器以及组播接收者之间&#xff1b; 原理&#xff1a;当组播接收者需要接收某个组别的流量时&#xff0c;会向最后…...

价格管控有哪些有效的方法

品牌在面对线上店铺的低价、窜货时&#xff0c;需要及时进行干预治理&#xff0c;否则低价效应会蔓延&#xff0c;会有越来越多的店铺跟价&#xff0c;导致渠道更加混乱&#xff0c;但是管控价格也非一时之事&#xff0c;需要品牌按流程治理。 力维网络有多年价格管控经验&…...

【Docker】Docker相关基础命令

目录 一、Docker服务相关命令 1、启动docker服务 2、停止docker服务 3、重启docker服务 4、查看docker服务状态 5、开机自启动docker服务 二、Images镜像相关命令 1、查看镜像 2、拉取镜像 3、搜索镜像 4、删除镜像 三、Container容器相关命令 1、创建容器 2、查…...

掌握Python的X篇_16_list的切片、len和in操作

接上篇掌握Python的X篇_15_list容器的基本使用&#xff0c;本篇进行进一步的介绍。 文章目录 1. list的索引下标可以是负数2. 切片&#xff08;slice&#xff09;2.1 切片基础知识2.2 如何“取到尽头”2.3 按照步长取元素2.4 逆序取值 3. len函数获取lis的元素个数4. in操作符…...

给定长度值length,把列表切分成每段长度为length的N段列表,Kotlin

给定长度值length&#xff0c;把列表切分成每段长度为length的N段列表&#xff0c;Kotlin import kotlin.random.Randomfun main(args: Array<String>) {var source mutableListOf<String>()val end Random.nextInt(30) 1for (i in 0 until end) {source.add(i.…...

leetcode每日一题Day2——344. 反转字符串

✨博主&#xff1a;命运之光 &#x1f984;专栏&#xff1a;算法修炼之练气篇&#xff08;C\C版&#xff09; &#x1f353;专栏&#xff1a;算法修炼之筑基篇&#xff08;C\C版&#xff09; &#x1f433;专栏&#xff1a;算法修炼之练气篇&#xff08;Python版&#xff09; …...

ISP记1

噪声分类 空间区域 分布模型分类&#xff1a;Gaussian噪声、瑞利噪声、泊松噪声、乘性噪声、脉冲噪声、均匀分布噪声 频域谱波形分类&#xff1a;均匀分布噪声、白噪声&#xff08;噪声的功率谱为参数&#xff0c;且与图像线性无关&#xff09;1/f噪声、a f 2 f^{2} f2噪声&a…...

无线蓝牙耳机有什么值得耳机买的?几款值得买的口碑品牌盘点

蓝牙耳机是一种无线耳机&#xff0c;其通过蓝牙技术与其他设备进行连接&#xff0c;例如手机、电脑、平板电脑等。蓝牙耳机使得用户可以在不受线缆限制的情况下享受音频体验&#xff0c;而且还可以方便地进行通话&#xff0c;目前市场上有许多不同种类和品牌的蓝牙耳机&#xf…...

异步检索在 Elasticsearch 中的理论与实践

异步检索在 Elasticsearch 中的理论与实践 https://www.elastic.co/guide/en/elasticsearch/reference/8.1/async-search.html#submit-async-search 引言 Elasticsearch 是一种强大的分布式搜索和分析引擎&#xff0c;它能够快速地存储、搜索和分析大量数据。在处理大规模数据时…...

了解Unity编辑器之组件篇Physics 2D(十二)

一、Area Effector 2D区域施加力&#xff09;&#xff1a;用于控制区域施加力的行为 Use Collider Mask&#xff08;使用碰撞器遮罩&#xff09;&#xff1a;启用后&#xff0c;区域施加力仅会作用于特定的碰撞器。可以使用Collider Mask属性选择要作用的碰撞器。 Collider Ma…...

[Pytorch]手写数字识别——真·手写!

Github网址&#xff1a;https://github.com/diaoquesang/pytorchTutorials/tree/main 本教程创建于2023/7/31&#xff0c;几乎所有代码都有对应的注释&#xff0c;帮助初学者理解dataset、dataloader、transform的封装&#xff0c;初步体验调参的过程&#xff0c;初步掌握openc…...

android studio 找不到符号类 Canvas 或者 错误: 程序包java.awt不存在

android studio开发提示 解决办法是&#xff1a; import android.graphics.Canvas; import android.graphics.Color; 而不是 //import java.awt.Canvas; //import java.awt.Color;...

AWS——02篇(AWS之服务存储EFS在Amazon EC2上的挂载——针对EC2进行托管文件存储)

AWS——02篇&#xff08;AWS之服务存储EFS在Amazon EC2上的挂载——针对EC2进行托管文件存储&#xff09; 1. 前言2. 关于Amazon EFS2.1 Amazon EFS全称2.2 什么是Amazon EFS2.3 优点和功能2.4 参考官网 3. 创建文件系统3.1 创建 EC2 实例3.2 创建文件系统 4. 在Linux实例上挂载…...

FFmpeg 打包mediacodec 编码帧 MPEGTS

在Android平台上合成视频一般使用MediaCodec进行硬编码&#xff0c;使用MediaMuxer进行封装&#xff0c;但是因为MediaMuxer支持格式有限&#xff0c;一般会采用ffmpeg封装&#xff0c;比如监控一般使用mpeg2ts格式而非MP4,这是因为两者对帧时pts等信息封装差异导致应用场景不同…...

(十)学生端搭建

本次旨在将之前的已完成的部分功能进行拼装到学生端&#xff0c;同时完善学生端的构建。本次工作主要包括&#xff1a; 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...

DAY 47

三、通道注意力 3.1 通道注意力的定义 # 新增&#xff1a;通道注意力模块&#xff08;SE模块&#xff09; class ChannelAttention(nn.Module):"""通道注意力模块(Squeeze-and-Excitation)"""def __init__(self, in_channels, reduction_rat…...

2.Vue编写一个app

1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...

定时器任务——若依源码分析

分析util包下面的工具类schedule utils&#xff1a; ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类&#xff0c;封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz&#xff0c;先构建任务的 JobD…...

Python实现prophet 理论及参数优化

文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候&#xff0c;写过一篇简单实现&#xff0c;后期随着对该模型的深入研究&#xff0c;本次记录涉及到prophet 的公式以及参数调优&#xff0c;从公式可以更直观…...

Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持续更新中&#xff01;&#xff08;长期更新&#xff09; 目前2025年06月05日更新到&#xff1a; AI炼丹日志-28 - Aud…...

2025 后端自学UNIAPP【项目实战:旅游项目】6、我的收藏页面

代码框架视图 1、先添加一个获取收藏景点的列表请求 【在文件my_api.js文件中添加】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口&#xff08;适配服务端返回 Token&#xff09; export const login async (code, avatar) > {const res await http…...

vue3 定时器-定义全局方法 vue+ts

1.创建ts文件 路径&#xff1a;src/utils/timer.ts 完整代码&#xff1a; import { onUnmounted } from vuetype TimerCallback (...args: any[]) > voidexport function useGlobalTimer() {const timers: Map<number, NodeJS.Timeout> new Map()// 创建定时器con…...

AI书签管理工具开发全记录(十九):嵌入资源处理

1.前言 &#x1f4dd; 在上一篇文章中&#xff0c;我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源&#xff0c;方便后续将资源打包到一个可执行文件中。 2.embed介绍 &#x1f3af; Go 1.16 引入了革命性的 embed 包&#xff0c;彻底改变了静态资源管理的…...

分布式增量爬虫实现方案

之前我们在讨论的是分布式爬虫如何实现增量爬取。增量爬虫的目标是只爬取新产生或发生变化的页面&#xff0c;避免重复抓取&#xff0c;以节省资源和时间。 在分布式环境下&#xff0c;增量爬虫的实现需要考虑多个爬虫节点之间的协调和去重。 另一种思路&#xff1a;将增量判…...