Given a sorted integer array without duplicates, return the summary of its ranges.
For example, given [0,1,2,4,5,7]
, return ["0->2","4->5","7"].
思路:循环遍历这个数组,如果a[i+1]<a[i]则将a[i]设置为这个范围的尾,将其入list,然后将a[i+1]设置为新的范围的开始。
代码如下(已通过leetcode)
public class Solution {
public List<String> summaryRanges(int[] nums) {
List<String> list=new ArrayList<String>();
if(nums.length==0) return list;
boolean iscome=false;
int i=1;
String temp=""+nums[0];
while(i<nums.length) {
iscome=true;
if(nums[i]!=nums[i-1]+1) {
temp+="->";
temp+=nums[i-1];
list.add(temp);
temp=""+nums[i];
}
i++;
}
if(iscome) {
if(nums[i-1]==nums[i-2]+1) {
temp+="->";
temp+=nums[i-1];
list.add(temp);
}
else list.add(""+nums[i-1]);
} else{
list.add(""+temp);
}
String[] temps=new String[list.size()];
int k=0;
while(!list.isEmpty()) {
temps[k]=list.remove(0);
k++;
}
for(k=0;k<temps.length;k++){
if(temps[k].contains("->")){
String[] split=temps[k].split("->");
if(split[0].equals(split[1])){
temps[k]=split[0];
}
}
}
for(k=0;k<temps.length;k++)
list.add(temps[k]);
return list;
}
}