将数组中的连续/序列号分组为字符串

时间:2018-04-08 17:24:04

标签: objective-c sequence

我想获取一组NSNumbers [11,12,13,24,10,25,26,41,30]并返回一个类似于以下组的NSString:10-13,24-26 ,30& 41

关于如何实现这一目标的任何方向?我尝试对数组进行排序,然后检查数组中的下一项是否为+1,以判断它是否是连续的。但之后我不知道如何处理这个数组只有一个数字(可能发生)或处理最后一个数字。也不是NSString目的的分组。

2 个答案:

答案 0 :(得分:0)

完整地看待任何问题都很容易让人无法理解。但是,如果你把它分解成更小甚至是中间片,你将得到你正在寻找的响应。

我认为你正走在正确的轨道上:

  1. 对数组进行排序。
  2. 创建一个可变数组来存储'分组'字符串。
  3. 检查数组是否连续。
  4. 将孤独者(" 30")和连续符号(" 10-13")作为字符串添加到可变数组中。
  5. 当你到处理结束时,检查这个中间数组是否包含四个元素:[" 10-13"," 24-26"," 30& #34;," 41"]。
  6. 接下来,将字符串数组处理为输出字符串。
  7. 处理决赛"&"一部分。
  8. 如果您已经解决了测试用例的问题([11,12,13,24,10,25,26,41,30]),那么您可以看到单个数字边缘情况会发生什么然后调整您的方法以正确处理它。

答案 1 :(得分:0)

NSIndexSet专门用于此。将您的号码添加到NSMutableIndexSet,然后使用enumerateRangesUsingBlock构建字符串。