日期:2014-05-20  浏览次数:20664 次

一个算法问题
例如 有一数组 [ 17-20, 23-36, 39-52 ] 其中符号“-”代表范围,
现在任意给出2个数字,比如30与32(这2个数必须在17到52之间),则结果是把23-36这个值输出出来
请教高手


再举个例子,还是上面这组数  
  输入40与43,则返回 39-52  
  输入29与50,则返回 23-36 和 39-52

注: (输入是人为控制的,虽然上面的数是17到52,但是用逗号隔开的部分是空的,也就是以上数组中不存在20到23、36到39之间的数字)

------解决方案--------------------
如果不追求高效率的话,循环遍历一下不就全出来了?

Java code

String[] ranges = {"17-20","23-36","39-52"};
int seek = 30;
for (String str : ranges) {
  String[] range = str.split("-");
  if (seek >= Integer.parse(range[0]) && seek <= Integer.parse(range[1])) {
    System.out.println(seek + ":" + str);
  }
}