首先题目链接如下
Leetcode 468-验证IP地址
牛客 NC113-验证IP地址
题目要求如下:
思路:
(1)首先IPv4和IPv6的判断要分为两个不同的函数,根据传入string中.
、:
的数量决定传入哪个函数,还是直接返回"Neither"
代码如下:
vector<string> res_token;//全局变量
string validIPAddress(string IP) {
if(count(IP.begin(),IP.end(),'.')==3)
return v4Solve(IP);
else if(count(IP.begin(),IP.end(),':')==7)
return v6Solve(IP);
else return "Neither";
}
(2)不论是IPv4还是IPv6的验证子函数,都需要将传入的string按分隔符.
或:
分为几个token,然后依次判断某个token是否合法,这里就需要用到了split,实现的思路详见之前的博客,链接如下:
用C++实现split分割字符串
⚠️注意:上面的博客也提到了,由于可能有连续的分隔符,因此token可能为空因此需要判断,否则会访问越界导致段错误
代码如下:
void split(string s,char ch){
string token;
istringstream str_stream(s);
while(getline(str_stream,token,ch))
res_token.push_back(token