题意:
        编写一个函数来验证输入的字符串是否是有效的 IPv4 或 IPv6 地址。
        规则如下:


方法:
模拟

思路:
        模拟。
        首先,遍历字符串,初始判断是IPV4还是IPV6。
        如果是IPV4,错误的情况:某一段IP值超过 255 或含有前导 0 ;
        如果是IPV6,错误的情况:某一段IP的长度大于4或等于0 或 字符超过范围。

        
        

class Solution {
public:
    
    string solve(string IP) {
        int len=IP.size();
        int flag=0;//1表示IPV4,2表示IPV6,3表示失败
        
        for(int i=0;i<len;i++){//判断是IPV4还是IPV6
            if(IP[i]=='.'){
                flag=1;
                break;
            }else if(IP[i]==':'){
                flag=2;
                break;
            }
        }
        string s="";
        int x=0;
        if(flag==1){//判断IPV4
            for(int i=0;i<len;i++){
                if(IP[i]=='.'){
                    if(x>255||s.size()>1&&s[0]=='0'){//如果超过255或含有前导0,则返回失败
                        flag=3;
                        break;
                    }
                    x=0;
                    s="";
                }else{
                    s+=IP[i];
                    x=x*10+IP[i]-'0';
                }
            }
            if(x>255||s.size()>1&&s[0]=='0'){//如果超过255或含有前导0,则返回失败
                flag=3;
            }
            x=0;
            s="";
        }else if(flag==2){//判断IPV6
            for(int i=0;i<len;i++){
                if(IP[i]==':'){
                    if(s.size()>4||s.size()==0){//如果某一段的长度大于4或等于0,则返回失败
                        flag=3;
                        break;
                    }
                    s="";
                }else{
                    s+=IP[i];
                    if(IP[i]>='g'&&IP[i]<='z'||IP[i]>='G'&&IP[i]<='Z'){//如果字符是超过范围,则返回失败
                        flag=3;
                        break;
                    }
                }
            }
            if(s.size()>4||s.size()==0){//如果某一段的长度大于4或等于0,则返回失败
                flag=3;
            }
            s="";
        }
        if(flag==1){
            return "IPv4";
        }else if(flag==2){
            return "IPv6";
        }
        return "Neither";
    }
};


时间复杂度:
空间复杂度: