精LintCode领扣算法问题答案:1889. 区间合并

Posted 二当家的白帽子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了精LintCode领扣算法问题答案:1889. 区间合并相关的知识,希望对你有一定的参考价值。

1889. 区间合并:

现在给你两个字符串区间(按字典顺序), 请你判断两个区间是否可以合并。
字符串区间[a, b),包括所有以a开头的字符串。
例如,区间[a, b)和区间[ab,c)是可以合并的,区间[a,b)和区间[b, c]也是可以合并的。
若是可以合并请返回true, 不可以请返回false。

说明

若两个区间A和B,满足A⋃B是一个连续区间,则A和B可合并。

样例 1

输入:
	"[a,b]" "[b,c]"
输出: 
	true

样例 2

输入:
	"[a,b]" "(b,c]"
输出: 
	true

样例 3

输入:
	"[a,b)" "(b,c]"
输出: 
	false

样例 4

输入:
	"(b,c)" "[a,b]"
输出: 
	true

原题传送门



题解

public class Solution {
    /**
     * @param interval_A: a string represent a interval.
     * @param interval_B: a string represent a interval.
     * @return: if two intervals can merge return true, otherwise false.
     */
    public boolean MergeJudge(String interval_A, String interval_B) {
        // write your code here

        String strA = interval_A.substring(1, interval_A.length() - 1);
        String strB = interval_B.substring(1, interval_B.length() - 1);

        // 始终让a在b前面
        if (strA.compareTo(strB) > 0) {
            return MergeJudge(interval_B, interval_A);
        }

        String[] ias = strA.split(",");
        //String a1 = ias[0];
        String a2 = ias[1];

        String[] ibs = strB.split(",");
        String b1 = ibs[0];
        //String b2 = ibs[1].substring(0, ibs[1].length() - 1);

        // 重叠
        if (a2.compareTo(b1) > 0) {
            return true;
        }

        char aEndChar   = interval_A.charAt(interval_A.length() - 1);
        char bStartChar = interval_B.charAt(0);

        // 相等边界
        if ((']' == aEndChar
                 || '['== bStartChar)
                && a2.compareTo(b1)  == 0) {
            return true;
        }

        // 重叠
        if (']' == aEndChar
                && '[' == bStartChar
                && b1.startsWith(a2)) {
            return true;
        }

        return false;
    }
}

最后说两句

非常感谢你阅读本文章,如果你觉得本文对你有所帮助,请留下你的足迹,点个赞,留个言,多谢~

作者水平有限,如果文章内容有不准确的地方,请指正。

希望小伙伴们都能每天进步一点点。

本文由二当家的白帽子博客原创,转载请注明来源,谢谢~

以上是关于精LintCode领扣算法问题答案:1889. 区间合并的主要内容,如果未能解决你的问题,请参考以下文章

精LintCode领扣算法问题答案:入门

精LintCode领扣算法问题答案:1890. 形成最小数

精LintCode领扣算法问题答案:1890. 形成最小数

精LintCode领扣算法问题答案:1892 · 扫雷

精LintCode领扣算法问题答案:1891 · 旅行计划

精LintCode领扣算法问题答案:1891 · 旅行计划