leetcode:HJ18 识别有效的IP地址和掩码并进行分类统计[华为机考][字符串]

学习要点

  1. bitset<8>
  2. ostringstream
  3. stoi
  4. string.find
  5. string.substr

题目链接

        识别有效的IP地址和掩码并进行分类统计_牛客题霸_牛客网

题目描述

解法

#include <iostream>
#include <bits/stdc++.h>
#include <sstream>
#include <string>
#include <vector>
using namespace std;int main() {int A = 0;int B = 0;int C = 0;int D = 0;int E = 0;int W = 0;int P = 0;  string line_str;while (getline(cin, line_str)) {string ip;  string str1; string str2; string str3; string str4;string net;ip = line_str.substr(0, line_str.find('~'));net = line_str.substr(line_str.find('~') + 1);// 先检查ipint point1 = ip.find('.');int point2 = ip.find('.',point1+1);int point3 = ip.find('.',point2+1);if((point1 == 0) || ( point1+1 == point2) || (point2+1 == point3) || (point3 == ip.size() -1)){                   // 检查ip是否合法W++;continue;}str1 = ip.substr(0,point1);str2 = ip.substr(point1+1,point2-point1-1);if(str1 == "0" || str1 == "127"){                   // 检查是否是特殊地址continue;}// 再检查子网掩码int point_1 = net.find('.');int point_2 = net.find('.',point_1+1);int point_3 = net.find('.',point_2+1);if((point_1 == 0) || ( point_1+1 == point_2) || (point_2+1 == point_3) || (point_3 == net.size() -1)){       // 检查子网掩码是否合法---点号W++;continue;}int num1 = stoi(net.substr(0,point_1));int num2 = stoi(net.substr(point_1+1,point_2 - point_1 - 1));int num3 = stoi(net.substr(point_2+1,point_3 - point_2 - 1));int num4 = stoi(net.substr(point_3+1));ostringstream outstr;bitset<8> binary1(num1); bitset<8> binary2(num2); bitset<8> binary3(num3); bitset<8> binary4(num4); outstr << binary1 << binary2 << binary3 << binary4;string binary_net = outstr.str();int zero_pos = binary_net.find('0');if(zero_pos == string::npos || binary_net.find('1') == string::npos ) {       // 检查子网掩码是否合法---全为0或全为1W++;continue;}bool flag = false;for(int i = zero_pos+1; i<binary_net.size();i++){if(binary_net[i] == '1'){flag = true;}}if(flag){       // 检查子网掩码是否合法---连续1后连续0W++;continue;}// 至此全部合法且不为特殊地址if(str1 == "10" || (str1 == "172" && stoi(str2) >= 16 && stoi(str2)<= 31) || (str1 == "192" && str2 == "168")){P++;}if(stoi(str1) >= 1 && stoi(str1) <= 127){A++;continue;}if(stoi(str1) >= 128 && stoi(str1) <= 191){B++;continue;}if(stoi(str1) >= 192 && stoi(str1) <= 223){C++;continue;}if(stoi(str1) >= 224 && stoi(str1) <= 239){D++;continue;}if(stoi(str1) >= 240 && stoi(str1) <= 255){E++;continue;}}cout << A << ' ' << B << ' ' << C << ' ' << D << ' ' << E << ' ' << W << ' ' << P << endl;
}

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

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

相关文章

JavaEE Tomcat

企业开发介绍 JavaEE 规范 JavaEE规范是J2EE规范的新名称,早期被称为 J2EE 规范,其全称是 Java 2 Platform Enterprise Edition,是由 SUN 公司领导、各厂家共同制定并得到广泛认可的工业标准(JCP 组织成员)。 其中,JCP 组织(官网)的全称是 Java Community Process,…

什么是神经网络,常用的神经网络,如何训练一个神经网络

神经网络&#xff1a;是深度学习的核心技术。模仿生物神经元工作方式的计算模型&#xff0c;由大量互相连接是神经元组成&#xff0c;通过数据学习复杂的模式和关系。1、神经网络基本组成&#xff1a;神经元、层、连接神经元神经网络的最小单元。每个神经元接受输入&#xff0c…

BigFoot Decursive 2.7.28 2025.07.11

插件显示为独立插件&#xff0c;之前是团队框架自带 BigFoot Decursive lua-CSDN博客 /decursive 命令打开插件 /DCRSHOW 打开设置列表 然后优先列表里面再点【p】添加&#xff0c;你要驱散得优先职业 一键驱散lua插件下载&#xff1a; https://download.csdn.net/downloa…

可穿戴智能硬件在国家安全领域的应用

可穿戴智能硬件在国家安全领域具有广泛应用&#xff0c;涵盖军事作战、安防监控、边境巡逻等多个方面&#xff0c;以下是具体介绍&#xff1a;军事作战与训练&#xff1a;战场态势感知&#xff1a;士兵佩戴集成多种传感器的智能头盔、智能背心等&#xff0c;可实时获取战场环境…

后端接口通用返回格式与异常处理实现

前言 目前大部分系统都是前后端分离架构&#xff0c;后端提供接口并返回 JSON 数据&#xff0c;前端接收数据后进行处理展示。为了提高前后端协作效率&#xff0c;后端接口返回值采用固定格式十分必要。 后端接口返回值通用格式 通用返回值通常包含 4 个核心字段&#xff0c…

【yolo】模型训练参数解读

在YOLO&#xff08;You Only Look Once&#xff09;目标检测模型的训练过程中&#xff0c;数据增强是一项至关重要且极具“艺术性”的技术。它通过对训练图像进行一系列随机变换&#xff0c;人为地创造出更多样化的训练样本&#xff0c;从而有效提升模型的泛化能力、鲁棒性&…

IPsec:网络层的加密盾牌与HTTPS的差异解析

​​一、IPsec核心原理​​1. 安全封装结构​┌───────────────┬────────────────┬──────────────────────┐ │ IP头部 │ IPSec头部 │ 加密/认证的载荷 │ │ (路由寻址) │ (AH/ESP) │…

【Python办公】Python如何批量提取PDF中的表格

目录 专栏导读概述主要工具库介绍1. tabula-py2. camelot-py3. pdfplumber4. PyMuPDF (fitz)环境准备安装依赖Java环境配置(tabula-py需要)方法一:使用tabula-py提取表格基础用法高级配置方法二:使用camelot-py提取表格方法三:使用pdfplumber提取表格批量处理多个PDF文件数…

MySQL自定义order by排序规则

数据表create table tb_user (id bigint auto_incrementprimary key,name varchar(16) not null,age int not null,address varchar(128) null );INSERT INTO test.tb_user (id, name, age, address) VALUES (1, 张三, 18, China); INSERT INTO test.tb_…

112套开题答辩行业PPT模版

毕业答辩开题报告&#xff0c;毕业答辩&#xff0c;论文设计PPT&#xff0c;清新论文答辩PPT模版&#xff0c;毕业论文答辩开题报告PPT&#xff0c;答辩演讲通用PPT模版&#xff0c;文艺时尚毕业答辩PPT模版&#xff0c;简约毕业论文答辩PPT模版112套开题答辩行业PPT模版&#…

驱动开发系列61- Vulkan 驱动实现-SPIRV到HW指令的实现过程(2)

本节继续介绍下SPIR-V到LLVM IR的转换过程,重点分析其核心机制和关键转换步骤。我们将从 LLVM 入手,结合实SPIR-V结构逐步转换为符合 LLVM IR 语义的表示方式。 一:详细过程 1. 创建llvm::module llvm::LLVMContext llvmContext; std::unique_ptr<llvm::Mod…

集训Demo2

做一个类似原神圣遗物生成、穿戴、卸下的案例创建项目创建数据库添加圣遗物获取4个数字&#xff0c;对应圣遗物随机的四种属性构造对象添加批量删除圣遗物foreach构造数组转移圣遗物分别在items和character两个库中根据id获取对象&#xff0c;判断唯一id存在哪个数据库中在item…

RedisJSON 技术揭秘`JSON.CLEAR` 一键清空容器、重置数字的“软删除”

一、指令速查 JSON.CLEAR <key> [path]参数说明keyRedis 键名pathJSONPath&#xff08;可选&#xff0c;缺省 $ 根&#xff1b;支持 *、.. 多路径&#xff09;返回值&#xff1a;整数——被清空的数组 / 对象数量 被置零的数值字段数量。已为空或为 0 的字段不会重复统计…

Java单元测试JUnit

文章目录前言一、JUnit描述&#xff08;引入Maven&#xff09;二、基本API注解2.1、Assert类2.2、JUnit注解三、普通单元测试3.1、BeforeClass、AfterClass、Before、After、Test合集测试四、SpringBoot单元测试4.1、SpringBoot集成Junit介绍4.2、实战&#xff1a;SpringBoot项…

HR数字化转型:3大痛点解决方案与效率突破指南

在人力资源部门工作多年&#xff0c;每天面对堆积如山的简历、此起彼伏的员工咨询、错综复杂的薪酬报表……作为HR的你&#xff0c;是否常感到被海量事务性工作淹没&#xff0c;难以喘息&#xff1f;在数字化转型的浪潮下&#xff0c;传统工作方式正遭遇前所未有的挑战。本文将…

如何运用个人IP影响力寻找使命的力量|创客匠人

在知识付费领域&#xff0c;那些能穿越周期的 IP&#xff0c;往往不只是 “卖课机器”&#xff0c;而是以使命为内核的价值传递者。使命为知识变现注入灵魂&#xff0c;让知识产品从 “信息交易” 升华为 “价值共鸣”&#xff0c;这正是个人 IP 实现深度变现与长期影响力的关键…

软件开发中的瀑布式开发与敏捷开发

一、瀑布式开发&#xff08;Waterfall Model&#xff09;核心流程 采用线性、阶段化开发&#xff0c;依次经历需求分析、设计、开发、测试、部署、维护&#xff0c;前一阶段完成后进入下一阶段&#xff0c;如瀑布流水单向推进。 典型阶段&#xff1a;需求固化→架构设计→代码实…

如何卸载SQLServer

1.打开控制面板2.双击&#xff0c;弹出对话框&#xff0c;点击删除3.然后一步一步跟着提示&#xff0c;下一步下一步就好了。4.如果发现没有卸载干净&#xff0c;快捷键winR&#xff0c;输入regedit&#xff0c;进入注册表5.找到计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\…

策略设计模式分析

策略设计模式概述策略模式&#xff08;Strategy Pattern&#xff09;属于行为型设计模式&#xff0c;允许在运行时动态选择算法或行为。它将算法封装成独立的类&#xff0c;使得它们可以相互替换&#xff0c;而不会影响客户端代码。核心组件1. 策略接口&#xff08;Strategy In…

IPM31主板E3300usb键盘鼠标安装成功Sata接口硬盘IDE模式server2003-nt-5.2.3790

IPM31主板E3300usb键盘鼠标安装成功Sata接口硬盘IDE模式server2003-nt-5.2.3790