数组连续数 连续数 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 最笨的办法 string[] a = { "1", "2", "4", "5", "7", "9" }; string n = ""; List<string> ls = new List<string>(); for (int i = 0; i < a.Length;i++ ) { if (i == 0) { n += a[i] + ","; } else { if (a[i] == (int.Parse(a[i - 1]) + 1).ToString()) { n += a[i] + ","; } else { if(n!="") ls.Add(n.TrimEnd(',')); n = ""; } } } /// int cou = ls.Count;//符合条件的个数 上面的有点问题,下面是修改过的 string[] a = { "1", "2", "4", "5", "7", "9" }; string n = ""; List<string> ls = new List<string>(); for (int i = 0; i < a.Length;i++ ) { if (i == 0) { n += a[i] + ","; } else { if (a[i] == (int.Parse(a[i - 1]) + 1).ToString()) { n += a[i] + ","; } else { n=n.TrimEnd(','); if (n != ""&&n.IndexOf(",")>-1) { ls.Add(n.TrimEnd(',')); n = a[i] + ","; } } } } /// int cou = ls.Count;//符合条件的个数 还一个总组数 怎么出来总数组 是什么意思?描述一下里面1跟2 是一个连续的组 4跟5是一个连续的组 总数是2组 string[] a = { "1", "2", "4", "5", "7", "9" }; string n = ""; List<string[]> ls = new List<string[]>(); for (int i = 0; i < a.Length;i++ ) { if (i == 0) { n += a[i] + ","; } else { if (a[i] == (int.Parse(a[i - 1]) + 1).ToString()) { n += a[i] + ","; } else { n=n.TrimEnd(','); if (n != ""&&n.IndexOf(",")>-1) { ls.Add(n.Split(',')); n = a[i] + ","; } } } } /// int cou = ls.Count;//符合条件的个数定义变了, List<string> ls = new List<string>();换成 List<string[]> ls = new List<string[]>();了 给你写一个using System;using System.Collections.Generic;using System.Linq;namespace ConsoleApplication1{ class Program { static void Main(string[] args) { var arr = new int[] { 1, 2, 3, 5, 6, 9, 11, 12 }; var result = 寻找连续数字(arr).ToList(); foreach (var s in result) { foreach (var x in s) Console.Write("{0} ", x); Console.WriteLine(); } Console.WriteLine("总共找到 {0} 组!", result.Count); Console.WriteLine("__________按任意键结束"); Console.ReadKey(); } private static IEnumerable<IEnumerable<int>> 寻找连续数字(int[] arr) { return 寻找连续数字(arr, 0, arr.Length - 2); } private static IEnumerable<IEnumerable<int>> 寻找连续数字(int[] arr, int start, int end) { for (var i = start; i <= end; i++) { var x = 寻找连续数字(arr, i); if (x != null) yield return x; } } private static IEnumerable<int> 寻找连续数字(int[] arr, int start) { var end = start + 1; for (; end < arr.Length && arr[end] == arr[end - 1] + 1; end++) { } if (end - start > 1) return arr.Skip(start).Take(end - start); else return null; } }}不过看得懂c#语法而看不懂算法逻辑,其实一点也没用。希望你要注意。 如果你需要跳过“包含”的输出组(例如1、2、3就包含了2、3),那么可以增加一个“跳过 i 下标”语句即可:using System;using System.Collections.Generic;using System.Linq;namespace ConsoleApplication1{ class Program { static void Main(string[] args) { var arr = new int[] { 1, 2, 3, 5, 6, 9, 11, 12 }; var result = 寻找连续数字(arr).ToList(); foreach (var s in result) { foreach (var x in s) Console.Write("{0} ", x); Console.WriteLine(); } Console.WriteLine("总共找到 {0} 组!", result.Count); Console.WriteLine("__________按任意键结束"); Console.ReadKey(); } private static IEnumerable<IEnumerable<int>> 寻找连续数字(int[] arr) { return 寻找连续数字(arr, 0, arr.Length - 2); } private static IEnumerable<IEnumerable<int>> 寻找连续数字(int[] arr, int start, int end) { for (var i = start; i <= end; i++) { var x = 寻找连续数字(arr, i); if (x != null) { yield return x; i += x.Count() - 1; } } } private static IEnumerable<int> 寻找连续数字(int[] arr, int start) { var end = start + 1; for (; end < arr.Length && arr[end] == arr[end - 1] + 1; end++) { } if (end - start > 1) return arr.Skip(start).Take(end - start); else return null; } }} 急求 多个结构体信息的归并问题~~~ 我花了8个积分竟然下载一个不能打开的东西!!!(我本来就没有什么积分!!) SQL的问题:如何查询在指定记录(多行)的下一行的记录 .net (num1 ^ num2); 是什么意思看不懂啊 C#计算两个字符串的相似度 讨论是否有人愿意花钱请软件开发方面的家教? 如何向Web服务器发送自定义的HTTP协议消息?要能够相互通信并且能够修改HTTP Request的Body内容 C#自定义属性!!! 如何使用API来修改WINFORM的标题栏 c#怎样操作音频和视频 网站抓包,能抓到数据库地址吗? 求高手给出一种判断某个颜色属于广义红色的方法,内详~
string n = "";
List<string> ls = new List<string>();
for (int i = 0; i < a.Length;i++ )
{
if (i == 0)
{
n += a[i] + ",";
}
else
{
if (a[i] == (int.Parse(a[i - 1]) + 1).ToString())
{
n += a[i] + ",";
}
else
{
if(n!="")
ls.Add(n.TrimEnd(','));
n = "";
}
}
}
///
int cou = ls.Count;//符合条件的个数
string n = "";
List<string> ls = new List<string>();
for (int i = 0; i < a.Length;i++ )
{
if (i == 0)
{
n += a[i] + ",";
}
else
{
if (a[i] == (int.Parse(a[i - 1]) + 1).ToString())
{
n += a[i] + ",";
}
else
{
n=n.TrimEnd(',');
if (n != ""&&n.IndexOf(",")>-1)
{
ls.Add(n.TrimEnd(','));
n = a[i] + ",";
}
}
}
}
///
int cou = ls.Count;//符合条件的个数
总数组 是什么意思?描述一下里面1跟2 是一个连续的组 4跟5是一个连续的组 总数是2组 string[] a = { "1", "2", "4", "5", "7", "9" };
string n = "";
List<string[]> ls = new List<string[]>();
for (int i = 0; i < a.Length;i++ )
{
if (i == 0)
{
n += a[i] + ",";
}
else
{
if (a[i] == (int.Parse(a[i - 1]) + 1).ToString())
{
n += a[i] + ",";
}
else
{
n=n.TrimEnd(',');
if (n != ""&&n.IndexOf(",")>-1)
{
ls.Add(n.Split(','));
n = a[i] + ",";
}
}
}
}
///
int cou = ls.Count;//符合条件的个数定义变了, List<string> ls = new List<string>();换成 List<string[]> ls = new List<string[]>();了
using System.Collections.Generic;
using System.Linq;namespace ConsoleApplication1
{
class Program
{ static void Main(string[] args)
{
var arr = new int[] { 1, 2, 3, 5, 6, 9, 11, 12 };
var result = 寻找连续数字(arr).ToList();
foreach (var s in result)
{
foreach (var x in s)
Console.Write("{0} ", x);
Console.WriteLine();
}
Console.WriteLine("总共找到 {0} 组!", result.Count);
Console.WriteLine("__________按任意键结束");
Console.ReadKey();
} private static IEnumerable<IEnumerable<int>> 寻找连续数字(int[] arr)
{
return 寻找连续数字(arr, 0, arr.Length - 2);
} private static IEnumerable<IEnumerable<int>> 寻找连续数字(int[] arr, int start, int end)
{
for (var i = start; i <= end; i++)
{
var x = 寻找连续数字(arr, i);
if (x != null)
yield return x;
}
} private static IEnumerable<int> 寻找连续数字(int[] arr, int start)
{
var end = start + 1;
for (; end < arr.Length && arr[end] == arr[end - 1] + 1; end++) { }
if (end - start > 1)
return arr.Skip(start).Take(end - start);
else
return null;
}
}
}不过看得懂c#语法而看不懂算法逻辑,其实一点也没用。希望你要注意。
using System.Collections.Generic;
using System.Linq;namespace ConsoleApplication1
{
class Program
{ static void Main(string[] args)
{
var arr = new int[] { 1, 2, 3, 5, 6, 9, 11, 12 };
var result = 寻找连续数字(arr).ToList();
foreach (var s in result)
{
foreach (var x in s)
Console.Write("{0} ", x);
Console.WriteLine();
}
Console.WriteLine("总共找到 {0} 组!", result.Count);
Console.WriteLine("__________按任意键结束");
Console.ReadKey();
} private static IEnumerable<IEnumerable<int>> 寻找连续数字(int[] arr)
{
return 寻找连续数字(arr, 0, arr.Length - 2);
} private static IEnumerable<IEnumerable<int>> 寻找连续数字(int[] arr, int start, int end)
{
for (var i = start; i <= end; i++)
{
var x = 寻找连续数字(arr, i);
if (x != null)
{
yield return x;
i += x.Count() - 1;
}
}
} private static IEnumerable<int> 寻找连续数字(int[] arr, int start)
{
var end = start + 1;
for (; end < arr.Length && arr[end] == arr[end - 1] + 1; end++) { }
if (end - start > 1)
return arr.Skip(start).Take(end - start);
else
return null;
}
}
}