建设外贸商城网站制作,澧县网页设计,网站建设找,如何加快网站访问速度ipv4地址#xff1a;1.必须是四个非空子串 2.每个非空子串不含前导零 3.子串里字符只能是0~255 ipv6地址#xff1a;1.必须是八个非空子串 2。每段非空串得长度是否在1~4之间#xff0c;且不含0-9#xff0c;a-f#xff0c;A-F之外得字符。 3.同时0-9也不允许含前导零
cl… ipv4地址1.必须是四个非空子串 2.每个非空子串不含前导零 3.子串里字符只能是0~255 ipv6地址1.必须是八个非空子串 2。每段非空串得长度是否在1~4之间且不含0-9a-fA-F之外得字符。 3.同时0-9也不允许含前导零
class Solution {
public:string validIPAddress(string queryIP) {vectorstring ipv4;vectorstring ipv6;char v4.;char v6:;if(queryIP.size()0) return Neither;char cqueryIP[queryIP.size()-1];if(cv4||cv6) return Neither;//如果地址字符串末尾是or. 那肯定不是split(queryIP,ipv4,v4);split(queryIP,ipv6,v6);if(IsIPv4(ipv4)) return IPv4;IsIPv6(ipv6);if(IsIPv6(ipv6)) return IPv6;return Neither;}
private:bool IsIPv4(vectorstring ip){if(ip.size()!4) return false;for(auto subip:ip){if(subip[0]0subip.size()1||subip.size()3||subip.empty()) return false;//一定要判空subip.empty()不然底下stoi会报错for(char c:subip){if(c0||c9) return false;//先判断每个是不是数字}int subipintstoi(subip);if(subipint0||subipint255) return false;//再判断数字的范围}return true;}bool IsIPv6(vectorstring ip){if(ip.size()!8) return false;//首先是不是八个子串for(auto subip:ip){int lensubip.size();if(len0||len5) return false;//八个子串的长度是不是1~4for(int i0;isubip.size();i){if(subip[i]fsubip[i]a||subip[i]Fsubip[i]A||subip[i]9subip[i]0) continue;else return false;// if(subip[i]0||subip[i]9subip[i]A||subip[i]Fsubip[i]a||subip[i]f) return false;}}return true;}void split(string s,vectorstringip,char c){// int flag0,lens.size();// if(s[len-1]c) flag1;//如果ip地址的最末尾是.或者是:,那肯定就不是ip地址sc;for(int i0;is.size();i){ int ji;string item;while(s[j]!c) items[j];ij;ip.push_back(item);}}
};
答案 但是内存消耗不容乐观 其中出现的几个问题总结一一下第一个是spilt函数截取字符串的问题。 ipv41.子字符串为4个2.子字符串不为空子字符串的长度不能大于3即数字在1-3个之间子字符串不含前导零 3.子字符串的每个字符必须是数字4.子字符串在0~255之间先使用stoi转为int ipv61.子字符串为8个 2.子字符串的长度必须要在1-4之间不能1不能5) 3.子字符串的字符必须在0-9a-fA-F之间