解題思路
- 使用string類型變量接受輸入值
- 自定義字符串轉數字的函數,自定義flag變量1/0判斷ip串是否成立
- 判斷是否有三個點分割,如果少於或大於,flag=0
- 每一個點分割的字串用一個string接受數字字符
代碼如下
#include <iostream>
#include <algorithm>
using namespace std;
int stringToNum(string s){
int ans=0;
for(int i=0;i<s.length();i++){
ans*=10;
ans+=s[i]-'0';
}
return ans;
}
int main()
{
string s;
while(cin>>s){
int pointSum=0;
string a[4];
int flag=1;
for(int q=0;q<s.length();q++){
char i=s[q];
if(i=='.')pointSum++;
else if(i>='0' && i<='9')
a[pointSum]+=i;
if(pointSum>3)
{
flag=0;
break;
}
}
if(s.length()==a[0].length()+a[1].length()+a[2].length()+a[3].length()+3)
{
for(int t=0;t<=3;t++){
int a0=stringToNum(a[t]);
if(a0<0 || a0>255)flag=0;
}
}
else flag=0;
if(flag==1)printf("Y\n");
else printf("N\n");
}
return 0;
}