Leetcode 468 Solution
This article provides solution to leetcode question 468 (validate-ip-address)
Access this page by simply typing in "lcs 468" in your browser address bar if you have bunnylol configured.
Leetcode Question Link
https://leetcode.com/problems/validate-ip-address
Solution
class Solution {
public:
vector<string> split(const string& str, char splitter)
{
vector<string> tokens;
int last_start = 0;
for (int i = 0; i < str.size(); i++)
{
if (str[i] == splitter)
{
tokens.push_back(str.substr(last_start, i - last_start));
last_start = i + 1;
}
}
tokens.push_back(str.substr(last_start, str.size() - last_start));
return tokens;
}
string validIPAddress(string IP)
{
if (IP.find('.') != string::npos)
{
auto tokens = split(IP, '.');
if (tokens.size() != 4)
return "Neither";
vector<int> nums(4);
for (int i = 0; i < 4; i++)
{
nums[i] = atoi(tokens[i].c_str());
if (to_string(nums[i]) != tokens[i])
return "Neither";
if (nums[i] < 0 || nums[i] > 255)
return "Neither";
}
return "IPv4";
}
else if (IP.find(':') != string::npos)
{
auto tokens = split(IP, ':');
if (tokens.size() != 8)
return "Neither";
for (int i = 0; i < tokens.size(); i++)
{
auto token = tokens[i];
if (token.size() > 4 || token.size() == 0)
return "Neither";
for (int j = 0; j < token.size(); j++)
{
if (('0' <= token[j] && token[j] <= '9')
|| ('a' <= token[j] && token[j] <= 'f')
|| ('A' <= token[j] && token[j] <= 'F'))
continue;
return "Neither";
}
}
return "IPv6";
}
return "Neither";
}
};