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
英文地址,請注明出處:http://en.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