leetcode_Summary Ranges

描述:

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"].

思路:

类似字符串的压缩,就是统计下连续数组元素并判断该数组元素是否连续递增,将连续递增的系列元素用startNum->endNum进行压缩,当然对于孤立的数字点,直接原样压缩即可。

代码:

public List<String> summaryRanges(int[] nums) {
        List<String>listStr=new ArrayList<String>();
        if(nums==null||nums.length==0)
            return listStr;
        int start=0,end=0,i=0;
        while(i<nums.length)
        {
            start=nums[i];
            while(i+1<nums.length&&nums[i+1]-nums[i]==1)
                i=i+1;
            end=nums[i];
            if(start==end)
                listStr.add(String.valueOf(start));
            else
                listStr.add(""+start+"->"+end);//一般是不鼓励用这种方法来生成字符串的,因为这样很吃内存,但好像jdk1.7后对该方法用StringBuilder来处理了,所以现在好多地方又开始鼓励用这种方法来生成字符串了,Zzz。。。
            i++;
        }
        return listStr;
        
    }


你可能感兴趣的:(leetcode_Summary Ranges)