精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. 区间合并的主要内容,如果未能解决你的问题,请参考以下文章