用c#把一串数字的连续的和不连续的区分开

问题描述

用c#把一串数字的连续的和不连续的区分开:数字:数量是随机的(最多24个),顺序是从小到大,范围是1-24,有些连续,有些不连续。例:【1,2,3,5,7,8,9,15,18,19,24】结果:1-3;5-5;7-9;15-15;18-19;24-24例:【5,8,9,10,11,13,14,15,16,18,19】结果,5-5,8-11;13-16,18-19

解决方案

解决方案二:
既然“顺序是从小到大”,直接判断就可以了:int[]nums={1,2,3,5,7,8,9,15,18,19,24};stringresult="";for(inti=0;i<nums.Length;i++){if(i==0)result+=nums[i];elseif(nums[i]-nums[i-1]!=1)result+="-"+nums[i-1]+","+nums[i];elseif(i==nums.Length-1)result+="-"+nums[i];}
解决方案三:
int[]a={1,2,3,5,7,8,9,15,18,19,24};intnowValue=a[0];intstartIndex=0;intendIndex=1;for(vari=1;i<=a.Length;i++){intv;if(i<a.Length){v=a[i];}else{v=a[a.Length-1]+2;}if(v!=nowValue+i-startIndex){endIndex=i-1;Console.WriteLine("{0}-{1}",nowValue,nowValue+endIndex-startIndex);nowValue=v;startIndex=i;}}
解决方案四:
可以把一楼代码中的最后一个else中的else删掉。if(i==0)result+=nums[i];elseif(nums[i]-nums[i-1]!=1)result+="-"+nums[i-1]+","+nums[i];if(i==nums.Length-1)result+="-"+nums[i];//删除else
解决方案五:
http://blog.csdn.net/xianfajushi/article/details/44001235
解决方案六:
int[]arr={1,2,3,5,7,8,9,15,18,19,24};varquery=arr.OrderBy(p=>p).Aggregate<int,List<List<int>>>(null,(m,n)=>{if(m==null)returnnewList<List<int>>(){newList<int>(){n}};if(m.Last().Last()!=n-1){m.Add(newList<int>(){n});}else{m.Last().Add(n);}returnm;});//打印结果query.ForEach(p=>Console.WriteLine(p.First()+"-"+p.Last()));

解决方案七:
这种作业只要学过循环语句就应该会啊

时间: 2024-10-21 14:33:38

用c#把一串数字的连续的和不连续的区分开的相关文章

请高手指点:C#中得到一串数字中有连续数字的开始和结束位置?

问题描述 比方说0,2,5,6,7,10,12,13,15,18--中,就有5,6,7和12,13两组连续(或更多),则要得到5,6,7的始末位置为(3,5):12,13的始末位置为(7,8)等,如何实现?小弟初学,想到头都破了都想不出,望高手指点,谢谢. 解决方案 解决方案二:简单的处理思路就是把这些数字放到一个key-value的dictionary中,key存放位置,value存放具体数据,接下来就是写程序判断是否连续了.解决方案三:strings="0,2,5,6,7,10,12,13,

Excel中快速输入身份证等长串数字技巧两则

在Excel中输入长串数字有时候会出现一些问题,比如输入身份证号码或者序列号,只要序列号超过15位,输入的结果就以科学计数法表示. 方法一.先用右键点击单元格空白处,然后在弹出的菜单中选择"设置单元格格式",在"单元格格式"设置窗口中"数字"栏的分类下拉列表中选择"文本". 方法二.在输入数字时先输入一个半角的单引号,然后再输入数字,也能达到同样的效果.需要注意的是,单引号必须是英文状态下输入.

WPS表格2013怎么输入长串数字?

  ①我们直接在单元格输入长串数字,很明显,显示的是科学计数法. ②先来告诉大家第一种方法,在输入数字的时候,先打一个单引号'然后在输入,得到的就是正确的数字. ③除此之外,还可以设置单元格的格式,右击,设置单元格格式. ④将其设为文本格式,这样直接输入的就是长串数字了.

在Excel中如何正确显示出长串数字?

  有的时候我们在excel表格中输入了一长串数字,但是显示不出来,这种情况很让人困恼,那么如何正确显示成这样的长串数字呢"6217001630005541399".下面小编就为大家介绍一下,来看看吧! 手动修改数字格式 [1]原因:Excel自动把长串数字转换成科学计数法,如果需要显示成长串数字就要将数据显示格式转换过来. [2]单击选中需要修改的单元格,鼠标右键单击,在选项菜单中选中"设置单元格格式" [3]在数字项,左侧菜单中选中"数值"并

我查查只显示一串数字没内容怎么办

  下载吧小编反复实验了几次都没问题,最后问那位网友让他提供了扫描后的截图,下载吧小编看了以后才发现原来这位网友购买的商品并不是热门商品再加上由于该网友所处的城市暂时没有收录该商品的相关信息和价格记录,从而导致网友反馈扫描后只显示一串数字,无其他内容.

.net-我这个hash函数对么?求出的hash值是0-9之间的一串数字,怎么转换为二进制的数字?

问题描述 我这个hash函数对么?求出的hash值是0-9之间的一串数字,怎么转换为二进制的数字? public long Ghash(char[] h) { long hash = 0; for (int i = 0; i < h.Length; i++) { hash = Convert.ToInt64( hash * 31 + h[i]); } return hash; } 解决方案 你这样比较容易溢出.当h比较长的时候. hash函数无所谓对错,只要满足,相同的输入,输出相同,不同的输入

图片-Timestamp在数据库是年月日格式,为什么在前台获取就是一串数字?

问题描述 Timestamp在数据库是年月日格式,为什么在前台获取就是一串数字? 如图第一张是数据库的,第二张是前台的,我想要的 前台也是年月日格式 发现这样转成date也不行,哪位知道请告知谢谢 解决方案 时间戳类型转换为String再使用,你贴出的代码setDeliverdtime设置的是数值,设置成String试试. 解决方案二: 看这个.http://www.cnblogs.com/Matrix54/archive/2012/05/03/2481260.html

javascript-js用户注册时自动生成不相关的一串数字

问题描述 js用户注册时自动生成不相关的一串数字 我在添加新用户时只是添加用户名和密码,但是为什么会在玩家编号那一栏自动生成这样一串东西.这是为什么啊?求大神解答. 解决方案 目测这个玩家编号你后台生成的一个GUID字符串,肯定不是自动生成的,代码里面写的 解决方案二: 自己看服务器端代码或者js代码罗,肯定是有代码生成了这个内容

asp.net计算一串数字中每个数字出现的次数_实用技巧

接下来拆分这一串字符串,每个字符插入一个表变量中,最后使用GROUP BY进行分组. 复制代码 代码如下: CalNumOfChtInStr SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: Insus.NET -- Create date: 2012-02-23 -- Description: Calculate the num