求帮忙写个算法,该如何解决

求帮忙写个算法
根据 1、长度相同为一组;2、起始几位字母相同为一组; 规则,得到缺失部分的数据。
如数据:【1000,1001,1002,1006,1009,abc10,abc11,abc12,abc15,abc123,abc124,abc127】
应得出的结果为:1003,1004,1005,1007,1008,abc13,abc14,abc125,abc126
------解决方案--------------------
        List<string> list = new List<string> { "1000", "1001", "1002", "1006", "1009", "abc10","abcd1", "abc11", 
                                                                          "abc12", "abc15", "abc123", "abc124","abcd5", "abc127" };
        Function(list);

        private void Function(List<string> list)
        {
            list.GroupBy(GroupData).ToList().ForEach(x =>
            {
                x.OrderBy(o => o).GroupBy(GroupData2).ToList().ForEach(y =>
                {
                    IOrderedEnumerable<string> orders = y.OrderBy(o => o);
                    int min = Convert.ToInt32(Regex.Match(orders.First(), @"[\d]+").Value);
                    int max = Convert.ToInt32(Regex.Match(orders.Last(), @"[\d]+").Value);
                    IEnumerable<string> result = Enumerable.Range(min, max - min).Select(s => 
                        Regex.Replace(orders.First(), @"[\d]+", s.ToString())).Where(w => !orders.Contains(w));
                    MessageBox.Show(string.Join(";", result));
                });
            });
        }

        private int GroupData(string str)
        {
            return str.Length;
        }

        private string GroupData2(string str)
        {
            return Regex.Replace(str, @"[\d]+", string.Empty);
        }

试试看