class Solution { public: /** * 验证IP地址 * @param IP string字符串 一个IP地址字符串 * @return string字符串 */ bool ipv4(string IP){ if(IP.empty()||IP.size()>3) return false; int num=0; for(int i=0;i<IP.size();i++){ num+=IP[i]-'0'; if(num==0&&i!=IP.size()-1) return false; num*=10; } if(num>2550||num<0) return false; return true; } bool ipv6(string IP){ if(IP.empty()||IP.size()>4) return false; for(int i=0;i<IP.size();i++){ if(IP[i]<='9'&&IP[i]>='0') continue; else if (IP[i]<='F'&&IP[i]>='A') continue; else if (IP[i]<='f'&&IP[i]>='a') continue; return false; } return true; } int split(string IP){ int flag1=0; int flag2=0; int temp=0; for(int i=0;i<IP.size();i++){ if(IP[i]=='.'){ if(flag1==2||flag2>2) return 0; flag1=1; flag2+=1; if(!ipv4(IP.substr(temp,i-temp))) return 0; temp=i+1; } else if (IP[i]==':') { if(flag1==1||flag2>6) return 0; flag1=2; flag2+=1; if(!ipv6(IP.substr(temp,i-temp))) return 0; temp=i+1; } } if(flag1==1){ if(!ipv4(IP.substr(temp,IP.size()-temp))) return 0; return 1; } else if (flag1==2) { if(!ipv6(IP.substr(temp,IP.size()-temp))) return 0; return 2; } else { return 0; } } string solve(string IP) { // write code here int ans=split(IP); if(ans==1){ return "IPv4"; } else if(ans==2){ return "IPv6"; } else return "Neither"; } };