若傳入?yún)?shù)值21~40,51~100,41~42,1~50(該參數(shù)類型可為string,string[]或list)合并結(jié)果為1~100,21~42(類型可同傳入?yún)?shù))。傳入?yún)?shù)可以重復,如:21~40,51~100,41~42,1~50,1~50,返回結(jié)果也同上。
4 回答

嗶嗶one
TA貢獻1854條經(jīng)驗 獲得超8個贊
//new String[]{"21~40","51~100","41~42","1~50"} public static Object merge(Object o) { if(o instanceof String[]) { String[] numbers = (String[])o; int resultLength = numbers.length; for(int i = 0; i < numbers.length; i++) { if(numbers[i] == null) continue; int start = getStart(numbers[i]); int end = getEnd(numbers[i]); if(start > end) continue; for(int j = 0; j < numbers.length; j++) { if(i == j || numbers[j] == null) continue; int nextStart = getStart(numbers[j]); int nextEnd = getEnd(numbers[j]); if(start == (nextEnd + 1)) { numbers[i] = nextStart + delimiter + end; numbers[j] = null; resultLength--; } } } String[] result = new String[resultLength]; int index = 0; for(int i = 0; i < numbers.length; i++) { if(numbers[i] == null) continue; result[index++] = numbers[i]; System.out.println(numbers[i]); } return result; } return null; }
只寫了string[]類型的,list等參數(shù)類型按照這個思路自己補充就行了

千巷貓影
TA貢獻1829條經(jīng)驗 獲得超7個贊
忘記兩個方法了
[code="java"]
private static final String delimiter = "~";
public static int getStart(String number)
{
String start = number.substring(0, number.indexOf(delimiter));
return Integer.valueOf(start);
}
public static int getEnd(String number) { String end = number.substring(number.indexOf(delimiter) + 1); return Integer.valueOf(end); }
添加回答
舉報
0/150
提交
取消