连续数字

using System;
using System.Collections.Generic;
using System.Linq;

namespace 连续数字
{
    class Program
    {
        static void Main(string[] args)
        {
            string str = Console.ReadLine();
            List<string> strList = new List<string>(str.Split(','));
            List<int> myNumArray = strList.Select(int.Parse).ToList();
            List<int> missLsit = new List<int>();
            string ss = "";
            myNumArray.Sort();
            if (IsRepeatNum(myNumArray))
            {
                //Console.WriteLine("输出");
                int[] all = IsContinuous(myNumArray);
                for (int i = 0; i < all.Length; i++)
                {
                    if(all[i] > 0 && all[i]< 1000000000)
                    {
                        missLsit.Add(all[i]);
                    }
                }
                ss = string.Join(",", missLsit);
                Console.WriteLine(ss);

            }
           
            
        }

        // 情况一 是否用重复的
        static bool IsRepeatNum(List<int> numList)
        {
            if (numList.Count == 1)
                return true;
            bool isBool = true;
            int number = 0;
            int poorNum = -1;
            for (int i = 0; i < numList.Count - 1; i++)
            {
                poorNum = Math.Abs(numList[i + 1] - numList[i]);
                if (poorNum == 0)//重复的
                {
                    isBool = false;
                    break;
                }
                else if (poorNum == 2)//大于2的
                {
                    number++;
                    if (number >= 2)
                    {
                        isBool = false;
                        break;
                    }
                   
                }
                else if(poorNum >= 3)
                {
                    isBool = false;
                    break;
                }
               
            }
            return isBool;
        }

        static int[] IsContinuous(List<int> numList)
        {
            int number = 0;
            int[] arrNum = new int[2];
            if (numList.Count <= 0)
                return new int[2] { 0,0};
   
            if (numList.Count == 1)
            {
                return new int[2] { numList[0] - 1, numList[0] + 1 };
            }
            
            int poorNum = -1;
            for (int i = 0; i < numList.Count - 1; i++)
            {
                poorNum = Math.Abs(numList[i + 1] - numList[i]);
                if (poorNum == 2)//重复的
                {
                    arrNum = new int[2] { numList[i + 1] - 1, 0 };
                    number++;
                }
              

            }
            if (number != 0)
            {
                return arrNum;
            }
            else
            {
                return new int[2] { numList[0] - 1, numList[numList.Count - 1] + 1 };
            }
         

        }
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值