简单的检测字符串是否是ip的算法
来源:互联网 发布:知乎 军工 编辑:程序博客网 时间:2024/06/05 19:47
一个ip地址,如222.111.144.111,那么怎么检测字符串是否是这样的形式呢。
笔试中做到这一题,因为时间不够最后没做出来,回来思考了一下,可以用堆栈的思想来解决本题,下面贴出代码
编程菜鸟,单纯记录自己的算法,还请各位大神多指教。
bool checkIP(string szIP){string stack = "\0";//定义一个堆栈int i = 0;int stackPoint = 0;//栈顶指针int numberOfPoint = 0;//读到的'.'的数量while (szIP[i] != '\0'){if ((szIP[i] > '9' || szIP[i] < '0') && szIP[i] != '.')//检测字符是否是数字或者'.'return false;stack = stack + szIP[i];//入栈if (stack[0] > '9' || stack[0] < '0')//栈底不能是字符'.'return false;if (stack[stackPoint] == '.')//检测到'.'入栈时,前面的数字出栈,并检测是否合法{stack[stackPoint] = '\0';numberOfPoint++;if (numberOfPoint>4)return false;if (stoi(stack)>255 || stoi(stack) < 0)//数字范围在0~255return false;else{stack.clear();stackPoint = 0;}}elsestackPoint++;i++;}if (stack == "\0")return false;if (stoi(stack) > 255 || stoi(stack) < 0)//检测最后一趟return false;elsereturn true;}
思想是:遍历整个字符串,每次扫描的字符首先检查是不是数字或者字符'.',如果是,就压入堆栈,然后检查堆栈底部,堆栈底部不能是字符'.',如果是则报错。
检查完堆栈底部之后,当每次有字符'.'压入堆栈时,取出全部的堆栈内容,检测之前压入的数字的范围,要在0~255之内。这样的出栈最多存在四次,如果超过四次则报错。
通过这种方法,外置一个堆栈,只用循环遍历字符串一遍就能检测字符串是否是ip地址。
阅读全文
0 0
- 简单的检测字符串是否是ip的算法
- Python----检测字符串是否是十进制格式的IP地址
- 检测输入框中是否是合法的IP地址
- 算法:判断字符串是否是回文的
- 如何判断字符串是否是有效的的IP地址
- java判断输入的字符串是否是一个IP
- 如何判断用户输入的字符串是否是IP地址
- 判断一个字符串的ip是否是IP合法的ip地址
- 判断一个字符串的ip是否是IP合法的ip地址
- PHP 检测字符串的编码是否是UTF-8编码的函数 check_utf8() 准确率最高的!
- 算法是代码的灵魂-判断一个字符串是否是回文字符串
- 检测输入的字符串是否是数字的几种方法
- 判断字符串是否是正确的IP格式的C语言函数
- 判断是否是有效的IP地址
- 判断一个字符串是否是另外一个字符串的后缀的算法
- 判断一个字符串是否是域名或者IP的小程序
- C#下判断一个字符串是否是ip地址的函数
- 检测字符串是否含有html标签的检测fn
- Python中引用类型的应用(Django系列2)
- 邻接矩阵、构造有向图
- Xilinx火龙果学习笔记(2)---vivado工程搭建
- 范数概念
- 1012. 数字分类 (20)
- 简单的检测字符串是否是ip的算法
- LiteIDE中漂亮的几款QSS
- 指针的算术运算
- win10 uwp 后台获取资源
- C++之继承与派生类
- 秒破 "2 --- 50" bug
- 打字小游戏
- MVP+Dagger2+Retrofit2+Rxjava搭建的一个电影相关的Demo
- 最小费用最大流模板