美文网首页程序员
力扣 468 合并区间

力扣 468 合并区间

作者: zhaojinhui | 来源:发表于2020-10-28 08:07 被阅读0次

题意:给定一个string,判断是否是合法字符串

思路:

  1. 查看IP是否为null或空,是就返回Neither
  2. 查看IP是否以'.'或':'结尾,是就返回Neither
  3. IP用'.' 分割,如果长度是4,那么就用IPv4的判断方程,核实每一个字段
  4. 否则,IP用':' 分割,如果长度是8,那么就用IPv6的判断方程,核实每一个字段
  5. 否则返回Neither

思想:字符串的组合

复杂度:时间O(n),空间O(n)

class Solution {
    public String validIPAddress(String IP) {
        if(IP == null || IP.length() == 0)
            return "Neither";
        if(IP.charAt(IP.length() - 1) == '.' || IP.charAt(IP.length() - 1) == ':')
                return "Neither";
        String[] IPs = IP.split("\\.");
        if(IPs.length == 4) {
            for(String ip: IPs) {
                if(!isValidIPv4(ip))
                    return "Neither";
            }
            return "IPv4";
        } else {
            IPs = IP.split(":");
            if(IPs.length == 8) {
                for(String ip: IPs) {
                    if(!isValidIPv6(ip))
                        return "Neither"; 
                }
                return "IPv6";
            }
            return "Neither";
        }
    }
    boolean isValidIPv4(String ip) {
        if(ip.length() > 3 || ip.length() == 0)
            return false;
        if(ip.length() > 1 && ip.charAt(0) == '0')
            return false;
        int num = 0;
        for(int i=0;i<ip.length();i++) {
            char cur = ip.charAt(i);
            if(cur < '0' || cur > '9')
                return false;
            num = num*10 + (cur - '0'); 
        }
        if(num > 255)
            return false;
        return true;
    }
    boolean isValidIPv6(String ip) {
        if(ip.length() > 4 || ip.length() == 0)
            return false;
        for(int i=0;i<ip.length();i++) {
            char cur = ip.charAt(i);
            if((cur >= 'a' && cur <= 'f') || (cur >= 'A' && cur <= 'F') || 
               (cur >= '0' && cur <= '9'))
                continue;
            else 
                return false;
        }
        return true;
    }
}

相关文章

  • 力扣 468 合并区间

    题意:给定一个string,判断是否是合法字符串 思路: 查看IP是否为null或空,是就返回Neither 查看...

  • 区间调度之区间合并问题

    读完本文,你可以去力扣拿下如下题目: 56.合并区间[https://leetcode-cn.com/proble...

  • LeetCode 力扣 56. 合并区间

    题目描述(中等难度) 给定一个列表,将有重叠部分的合并。例如[ [ 1 3 ] [ 2 6 ] ] 合并成 [ 1...

  • 算法闲两题

    力扣:合并区间 示例 1:输入:[[1,3],[2,6],[8,10],[15,18]]输出: [[1,6],[8...

  • 56. 合并区间(Python)

    更多精彩内容,请关注【力扣中等题】。 题目 难度:★★★☆☆类型:数组方法:排序 给出一个区间的集合,请合并所有重...

  • 区间合并算法

    0X00 区间合并 803. 区间合并 57. 插入区间

  • 力扣 57 插入区间

    题意:给一个区间数组,和一个区间,把那个区间插入区间数组 思路:遍历每一个interval 如果当前interva...

  • LeetCode 56 [Merge Intervals]

    原题 给出若干闭合区间,合并所有重叠的部分。 样例给出的区间列表 => 合并后的区间列表: 解题思路 首先,把区间...

  • 2018-12-26

    问题列表 合并两个有序链表 合并K个排序链表 合并区间 插入区间 问题与反馈 总结与收获 多个有序链表的合并,类似...

  • 命令lines

    HBQJ 【合并区间】可以选取两个相邻的尺寸区间进行合并,也可以选择间隔几个区间的两个区间以将两个区间及其中间的所...

网友评论

    本文标题:力扣 468 合并区间

    本文链接:https://www.haomeiwen.com/subject/upzzmktx.html