牛客题霸 [ 验证IP地址] C++题解/答案

牛客题霸 [ 验证IP地址] C++题解/答案

题目描述

编写一个函数来验证输入的字符串是否是有效的 IPv4 或 IPv6 地址

IPv4 地址由十进制数和点来表示,每个地址包含4个十进制数,其范围为 0 - 255, 用(".")分割。比如,172.16.254.1;
同时,IPv4 地址内的数不会以 0 开头。比如,地址 172.16.254.01 是不合法的。

IPv6 地址由8组16进制的数字来表示,每组表示 16 比特。这些组数字通过 (":")分割。比如, 2001:0db8:85a3:0000:0000:8a2e:0370:7334 是一个有效的地址。而且,我们可以加入一些以 0 开头的数字,字母可以使用大写,也可以是小写。所以, 2001:db8:85a3:0:0:8A2E:0370:7334 也是一个有效的 IPv6 address地址 (即,忽略 0 开头,忽略大小写)。

然而,我们不能因为某个组的值为 0,而使用一个空的组,以至于出现 ( : : ) 的情况。 比如, 2001:0db8:85a3::8A2E:0370:7334 是无效的 IPv6 地址。
同时,在 IPv6 地址中,多余的 0 也是不被允许的。比如, 02001:0db8:85a3:0000:0000:8a2e:0370:7334 是无效的。

说明: 你可以认为给定的字符串里没有空格或者其他特殊字符。

题解:

其实就是按照题意模拟检验
注意特殊情况判断

代码:

class Solution {
public:/*** 验证IP地址* @param IP string字符串 一个IP地址字符串* @return string字符串*/string solve(string IP) {int pos1 = IP.find(".");int pos2 = IP.find(":");if((pos1 == IP.npos && pos2 != IP.npos) || (pos1 != IP.npos && pos2 == IP.npos)){string s = pos1 == IP.npos?":" : ".";int cnt = 0;int pos = IP.find(s);IP+=s;while(pos != IP.npos){string temp = IP.substr(0,pos);if(s == "."){if(temp.length() == 0 || temp.length() >= 4 || cnt >= 4)return "Neither";for(int i=0;i<temp.length();i++){char c=temp[i];if(!isdigit(c))return "Neither";}int x = stoi(temp);if(x >= 256 || x < 0)return "Neither";if(to_string(x) != temp)return "Neither";}else{if(temp.length() >= 5 || temp.length() == 0 || cnt >= 8)return "Neither";for(int i=0;i<temp.length();i++){char c=temp[i];if(!isxdigit(c))return "Neither";}}IP = IP.substr(pos + 1,IP.size());pos = IP.find(s);cnt++;}if(s == ".")return cnt == 4 ? "IPv4" : "Neither";elsereturn cnt == 8 ? "IPv6" : "Neither";}return "Neither";}
};

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

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

相关文章

不止代码:洛谷P1064 金明的预算方案+P2014选课(依赖背包)

文章目录题目描述总结解析解法1解法2代码解法3代码题目描述 金明的预算方案 选课 金明今天很开心&#xff0c;家里购置的新房就要领钥匙了&#xff0c;新房里有一间金明自己专用的很宽敞的房间。更让他高兴的是&#xff0c;妈妈昨天对他说&#xff1a;“你的房间需要购买哪些物…

Docker最全教程——从理论到实战(六)

本篇教程持续编写了3个星期左右并且一直在完善、补充具体的细节和实践&#xff0c;预计全部完成需要1到2个月的时间。由于编写的过程中极其费时&#xff0c;并且还需要配合做一些实践&#xff08;有些实践存在一些坑&#xff0c;而且极其费时费事&#xff09;。因此目前产出的速…

P4332-[SHOI2014]三叉神经树【LCT】

正题 题目链接:https://www.luogu.com.cn/problem/P4332 题目大意 给出nnn个点的一棵有根三叉树&#xff0c;保证每个点的儿子个数为333或者000&#xff0c;每个叶子有一个权值000或111&#xff0c;每个非叶子节点的权值是它儿子中权值较多的那个&#xff0c;每次修改一个叶子…

牛客题霸 [ 环形链表的约瑟夫问题] C++题解/答案

牛客题霸 [ 环形链表的约瑟夫问题] C题解/答案 题目描述 据说著名犹太历史学家 Josephus 有过以下故事&#xff1a;在罗马人占领乔塔帕特后&#xff0c;39 个犹太人与 Josephus 及他的朋友躲到一个洞中&#xff0c;39 个犹太人决定宁愿死也不要被敌人抓到&#xff0c;于是决定…

2016 Multi-University Training Contest 1 1004 GCD(ST表+二分)

GCD 注意观察gcd⁡(al,al1,...,ar)\gcd(a_{l},a_{l1},...,a_{r})gcd(al​,al1​,...,ar​)&#xff0c;当lll固定不动的时候&#xff0c;rl...nrl...nrl...n时&#xff0c;我们可以容易的发现,随着rrr的増大&#xff0c;gcd⁡(al,al1,...,ar)\gcd(a_{l},a_{l1},...,a_{r})gcd(…

警卫站岗(树上dp)

题目描述 五一来临&#xff0c;某地下超市为了便于疏通和指挥密集的人员和车辆&#xff0c;以免造成超市内的混乱和拥挤&#xff0c;准备临时从外单位调用部分保安来维持交通秩序。 已知整个地下超市的所有通道呈一棵树的形状&#xff1b;某些通道之间可以互相望见。总经理要求…

.NET Core实战项目之CMS 第八章 设计篇-内容管理极简设计全过程

写在前面上一篇文章.NET Core实战项目之CMS 第七章 设计篇-用户权限极简设计全过程中我带着大家进行了权限部分的极简设计&#xff0c;也仅仅是一个基本的权限设计。不过你完全可以基于这套权限系统设计你的更复杂的权限系统&#xff0c;当然更复杂的权限系统要根据你的业务来进…

P7405-[JOI 2021 Final]雪玉【二分】

正题 题目链接:https://www.luogu.com.cn/problem/P7405 题目大意 nnn个点在坐标轴上&#xff0c;qqq次每次所有点向一个方向移动若干步&#xff0c;每个点的权值是它第一次覆盖的区间长度&#xff08;也就是一个区间只能贡献到第一次经过它的点&#xff09;。 求所有点的最终…

牛客题霸 [ 集合的所有子集] C++题解/答案

牛客题霸 [ 集合的所有子集] C题解/答案 题目描述 现在有一个没有重复元素的整数集合S&#xff0c;求S的所有子集 注意&#xff1a; 你给出的子集中的元素必须按升序排列 给出的解集中不能出现重复的元素 题解&#xff1a; 先sort一下&#xff0c;然后通过回溯实现选与不选…

2021“MINIEYE杯”中国大学生算法设计超级联赛(2)I love max and multiply(转化)

I love max and multiply Code 代码抄的std #include<bits/stdc.h> using namespace std; using lllong long; template <class Tint> T rd() {T res0;T fg1;char chgetchar();while(!isdigit(ch)) {if(ch-) fg-1;chgetchar();}while( isdigit(ch)) res(res<&…

人工智能第二课:认知服务和机器人框架探秘

这是《人工智能系列笔记》的第二篇&#xff0c;我利用周六下午完成课程学习。这一方面是因为内容属于入门级&#xff0c;并且之前我已经对认知服务和机器人框架比较熟悉。如有兴趣&#xff0c;请关注该系列 https://aka.ms/learningAI 但是学习这门课程还是很有收获&#xff0c…

洛谷P4322 最佳团伙(树上dp)

题目描述 洛谷传送门 题目描述 JSOI 信息学代表队一共有 N 名候选人&#xff0c;这些候选人从 1 到 N 编号。方便起见&#xff0c;JYY 的编号是 0 号。每个候选人都由一位编号比他小的候选人Ri推荐。如果 Ri0&#xff0c;则说明这个候选人是 JYY 自己看上的。 为了保证团队的…

CF587F-Duff is Mad【AC自动机,根号分治】

正题 题目链接:https://www.luogu.com.cn/problem/CF587F 题目大意 给出nnn个字符串sss。qqq次询问给出l,r,kl,r,kl,r,k要求输出sl..rs_{l..r}sl..r​在sks_ksk​中出现了多少次。 1≤n,q,∑∣si∣≤1051\leq n,q,\sum |s_i|\leq 10^51≤n,q,∑∣si​∣≤105 解题思路 考虑一…

牛客题霸 [最长重复子串] C++题解/答案

牛客题霸 [最长重复子串] C题解/答案 题目描述 一个重复字符串是由两个相同的字符串首尾拼接而成&#xff0c;例如abcabc便是长度为6的一个重复字符串&#xff0c;而abcba则不存在重复字符串。 给定一个字符串&#xff0c;请编写一个函数&#xff0c;返回其最长的重复字符子串…

codeforces1552 D. Array Differentiation(思维+暴力)

D. Array Differentiation 因为相减的顺序可以变化&#xff0c;所以这个环中数的正负性以及相减顺序其实是没有影响的&#xff0c;那么我们可以规定一个方向&#xff0c;然后再枚举所有可能的正负性。 设这环中点分别是 v1,v2,⋯vkv_1,v_2,⋯v_kv1​,v2​,⋯vk​&#xff0c;那…

粉刷木板(ybtoj-单调队列)

题目描述 解析 头疼 定义dp[i]:只用前i块板的最大价值 对于新加入的一个木匠&#xff1a; 不难写出dp转移式&#xff1a; dp[i]max(dp[k](i-k)*p)k表示开始刷的前一个 其中i>s i-k<l; 要是这么转移会是n^2m 所以我就不废了。。。 其实离正解很接近了 把上面移一下项&am…

P6563-[SBCOI2020]一直在你身旁【dp,单调队列】

正题 题目链接:https://www.luogu.com.cn/problem/P6563 题目大意 长度为nnn的序列aia_iai​&#xff0c;现在有一个随机[1,n][1,n][1,n]的整数&#xff0c;每次你可以花费aia_iai​询问这个数字是否大于iii&#xff0c;求猜出所有数至少要多少花费。 T≤500,∑n≤7000T\leq …

牛客题霸 [字符串的排列] C++题解/答案

牛客题霸 [字符串的排列] C题解/答案 题解&#xff1a; stl真好用&#xff0c;emmm。。。 代码&#xff1a; class Solution { public:vector<string> Permutation(string str) {if (str.empty()) return {};sort(str.begin(), str.end());vector<string>ans;i…

POJ - 3415 Common Substrings(长度不小于K的公共子串个数)

Common Substrings 后缀数组单调栈 题解1 题解2 题解3 #include<cstdio> #include<cstring> #include<iostream> using namespace std; typedef long long ll; // sa[i]: 排名是i位的是第几个后缀 // rk[i]: 第i个后缀的排名是多少 // height[i]: sa[i]与s…

跳房子(ybtoj-单调队列)

文章目录题目描述解析代码thanks for reading&#xff01;题目描述 洛谷传送门 跳房子&#xff0c;也叫跳飞机&#xff0c;是一种世界性的儿童游戏&#xff0c;也是中国民间传统的体育游戏之一。 跳房子的游戏规则如下&#xff1a; 在地面上确定一个起点&#xff0c;然后在起…