黑马程序员技术交流社区
标题:
找连续数,例如一整数字符串1235678....,输出1-3,4,6-8
[打印本页]
作者:
董华阳
时间:
2013-3-13 12:42
标题:
找连续数,例如一整数字符串1235678....,输出1-3,4,6-8
本帖最后由 董华阳 于 2013-3-14 14:13 编辑
找连续数,例如一整数字符串1235678....,输出1-3,4,6-8 。如果是连续的数则输出这组连续数的第一个和最后一个数中间用“-”连接。不是则直接输出 。以下是我写的代码感觉比较麻烦,是否有简单的?谢谢!
string[] str = { "1", "2", "4", "5", "7", "8", "9", "11", "12", "14","17" };
//创建个ArrayList数组
ArrayList list = new ArrayList();
for (int i = 0; i < str.Length; i++)
{
//判断数组中的第一个元素
if (i < 1)
{
if (Convert.ToInt16(str[i + 1]) - Convert.ToInt16(str
) == 1)
{
list.Add(str
);
}
else
{
Console.WriteLine(str
);
}
}
else
{
//判断数组中的除第一个元素及最后一个元素中的其它元素
if (i < str.Length - 1)
{
if (Convert.ToInt16(str[i + 1]) - Convert.ToInt16(str
) == 1)
{
list.Add(str
);
}
else
{
if (Convert.ToInt16(str
) - Convert.ToInt16(str[i - 1]) == 1)
{
list.Add(str
);
Console.WriteLine(list[0] + "-" + list[list.Count - 1]);
list.Clear();
}
else
{
Console.WriteLine(str
);
}
}
}
else
{
//判断数组中的最后一个元素
if (Convert.ToInt16(str
) - Convert.ToInt16(str[i - 1]) == 1)
{
list.Add(str
);
Console.WriteLine(list[0] + "-" + list[list.Count - 1]);
list.Clear();
}
else
{
Console.WriteLine(str
);
}
}
}
}
Console.ReadKey();
作者:
曾玉锋
时间:
2013-3-13 20:42
本帖最后由 曾玉锋 于 2013-3-13 20:48 编辑
晕死,copy上来的代码居然部分丢失
作者:
曾玉锋
时间:
2013-3-13 20:49
string[] str = { "1", "2", "3", "4", "5", "8", "9", "11", "12", "14", "17" };
List<int> list = new List<int>();
StringBuilder sb = new StringBuilder();
//添加第一个数
sb.Append(str[0]);
for(int i=1;i<str.Length-1;i++)
{
int num1=int.Parse(str[i-1]);
int num2=int.Parse(str[i]);
int num3=int.Parse(str[i+1]);
if(num2-1==num1&&num2+1==num3)
{
sb.Append("-");
}
else if (num2 - 1 == num1 && num2 + 1 != num3)
{
sb.Append("-"+str[i]);
}
else
{
sb.Append(","+str[i]);
}
//当i=str.Length-2时 对最后两个元素进行判断
if (i == str.Length - 2 && num2 + 1 == num3)
{
sb.Append("-" + str[i + 1]);
}
else if(i==str.Length-2&&num2+1!=num3)
{
sb.Append(","+str[i+1]);
}
}
Console.WriteLine(Regex.Replace(sb.ToString(),@"-+","-"));
作者:
董华阳
时间:
2013-3-14 14:18
谢啦 !
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2