HDOJ 2206:IP的计算 这道题的边界条件可以挑战你的想象力
来源:互联网 发布:闲鱼.淘宝二手 编辑:程序博客网 时间:2024/05/16 08:23
这道题目跟我去雷军的小米科技三面的一道面试题有些类似,现在想起来当时并没有对边界条件做过多的考虑。
这道题目的URL:http://acm.hdu.edu.cn/showproblem.php?pid=2206
自己总结起来,一个合法的IP表达式应该满足下面几个条件。
1.每个ip小节的值不应该超过255,此外每个小节的字数都不能多于四个,
356.1.1.1
0356.1.1.1
都是不合法的。
2.只能出现四个ip小节,
1.1.1
1.1.1.
3.点号只能出现3次
1.1.1
1.1.1.1.
4.显然不能出现数字和点号之外的字符。
啊,做完这道题目之后,感慨颇深,太考验想象力了,字符处理起来还很需要一些技巧。贴一下我的AC代码,和大家分享一下,欢迎拍砖。
#include<iostream>#include<string.h>#include<stdio.h>using namespace std;const int Max = 110;char ip[Max];int main(){int cur;bool legal;bool numPro;int dotNum;int nodeNum;int curNum;while(cin.getline(ip, Max)){int len = strlen(ip);cur = 0;legal = true;numPro = false;dotNum = 0;nodeNum = 0;curNum = 0;for(int i=0; i<=len; i++){if(ip[i] >= '0' && ip[i] <= '9'){cur = cur * 10 + ip[i] - '0';numPro = true;curNum ++;if(cur > 255){legal = false;break;}if(curNum > 3){legal = false;break;}}else if(ip[i] == '.'){if(numPro) {nodeNum++;numPro = false;}cur = 0;dotNum ++;curNum = 0;if(dotNum > 3){legal = false;break;}}else if(i == len){if(cur > 255){legal = false;}if(numPro) nodeNum ++;if(dotNum != 3) legal = false;if(nodeNum != 4) legal = false;}else{legal = false;break;}}if(legal) cout << "YES" << endl;else cout << "NO" << endl;}system("pause");return 0;}
- HDOJ 2206:IP的计算 这道题的边界条件可以挑战你的想象力
- Html5 Canvas挑战你的想象力
- 挑战你的想象力 半年IT奇葩产品小结
- HDOJ--2206IP的计算
- hdoj 2206 IP的计算
- hdoj 2206 IP的计算
- hdoj 2206 IP的计算
- hdoj 2206 IP的计算
- hdoj 2206 IP的计算 【基础】
- 挑战年薪50万,你可以的
- 约定的边界条件类型
- HDOJ 2206 IP的计算(正则表达式的应用)
- HDOJ--2207IP的计算(二)
- 杭电ACM HDOJ 2206 IP的计算
- 想象力的意义
- 教你如何更好的激发孩子的想象力
- 挑战你的智力
- 挑战你的信仰
- JavaScript弹出模式窗口
- RoR利用Google邮件服务器的方法
- Hadoop MapReduce进阶 使用Chain
- const成员函数和mutable关键字
- 在MSSQL里把字串转成table变量
- HDOJ 2206:IP的计算 这道题的边界条件可以挑战你的想象力
- 【数据结构】单向有序链表---最水的代码
- 对自定义类实现排序的四种方法
- MS sqlserver2000 master库语言排序规则不一致导致的问题
- WAR and EAR file format
- VC6的快捷键
- B树、B-树、B+树、B*树
- Oracle merge
- code::blocks gcc wxwidgets wxsmith纠结的汉字