题目描述:
现在IPV4下用一个32位无符号整数来表示,一般用点分方式来显示,点将IP地址分成4个部分,每个部分为8位,表示成一个无符号整数(因此不需要用正号出现),如10.137.17.1,是我们非常熟悉的IP地址,一个IP地址串中没有空格出现(因为要表示成一个32数字)。
现在需要你用程序来判断IP是否合法。
注意本题有多组样例输入。
输入描述:
输入一个ip地址,保证是xx.xx.xx.xx的形式(xx为整数)
输出描述:
返回判断的结果YES or NO
示例:
输入:
10.138.15.1
255.0.0.255
255.255.255.1000
输出:
YES
YES
NO
解题思路:
这题是字符串分析题。截取字符串IP的四个数字,并判断其是否符合数值合理区间即可。
测试代码:
#include <iostream> #include <string> #include <bitset> #include <vector> using namespace std; string analyze(string str) { string temp; int k=0; for(int i=0;i<str.size();++i) { if(str[i]=='.') { temp=str.substr(k,i-k); k=i+1; int t=stoi(temp); if(t<0||t>255) return "NO"; } } temp=str.substr(k,str.size()-k); int t=stoi(temp); if(t<0||t>255) return "NO"; return "YES"; } int main() { string str; while(getline(cin,str)) { cout<<analyze(str)<<endl; } return 0; }