您的位置:首页 > 其它

87.Summary Ranges

2016-01-25 16:26 323 查看
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"].

分析:根据给定的有序的数组,找出各个连续段的范围,以list的形式返回。

falg为false时表示当前的数组单个连续,为true时表示多个连续.

当有多个数字连续时,则在当前String中追加"->"和这一阶段的最后一个元素。

当时单个数字时,则不用加 "->"。

/**
* 根据给定的有序的数组,找出各个连续段的范围,以list的形式返回。
* falg为false时表示当前的数组单个连续,为true时表示多个连续.
* 当有多个数字连续时,则在当前String中追加"->"和这一阶段的最后一个元素。
* 当时单个数字时,则不用加 "->"。
*/
public List<String> summaryRanges(int[] nums) {
List<String> list = new ArrayList<String>();
int len = nums.length;
if(len == 0){
return list;
}
boolean flag = false;//falg为false时表示当前的数组单个连续,为true时表示多个连续
StringBuffer sb = new StringBuffer();/*存储每一段的内容*/
for(int i=0;i<len;){
sb.append(nums[i]);//找到sb开头的元素
/*找下一个连续的子数组*/
while(i<len && nums[i]+1==nums[i+1]){
flag=true;
i++;
}
/*判断是否这次为多个数字连续*/
if(flag){
sb.append("->");
sb.append(nums[i]);
}
flag=false;//falg置为false,准备下一次循环
i++;
list.add(new String(sb));
sb.delete(0, sb.length());
}
return list;
}


仔细分析,认真代码。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: