【问题标题】:Array string grouping into specific sets数组字符串分组到特定集合
【发布时间】:2019-02-14 12:37:59
【问题描述】:

我有一个包含多组字母数字字符的数组,我想将它们分成组。 例如: 数组 1[] = {AAAAAAABBBBBBB1111111} 需要分组为AB1、AB1、AB1……

我该怎么做?

有时字符数可能不相等,例如可能有 6 个 A、5 个 B 和 6 个 1。

【问题讨论】:

  • 您好,已更正问题。该数组从 openCV haar 级联处理中获取数据。我想对它进行分组,以便可以将其与模板进行比较。
  • 那么当你上面说的字符不相等时会输出什么?
  • 最后一组将是'AB'
  • “ABB111”如何分组?
  • 那么已经在一个组中使用的字符不应该在下一组中使用吗?如果是AB112 怎么办?我猜AB121?分组的规则不是很清楚...

标签: c# arrays string sorting


【解决方案1】:
using System;
using System.Collections.Generic;
using System.Linq;

namespace ConsoleApp25
{
    class Program
    {
        static void Main(string[] args)
        {
            var str1 = "AAAAAAABBBBBBB1111111";
            var result1 = Do(str1);


            var str2 = "AAAAAAABBBBBBBBBBBBBBBB111111111111111111111";
            var result2 = Do(str2);


            Console.WriteLine(string.Join(" ", result1));
            Console.WriteLine(string.Join(" ", result2));

            Console.ReadLine();
        }

        private static string[] Do(string str)
        {
            var dic = new Dictionary<char, List<char>>();

            foreach (var c in str)
            {
                if (!dic.ContainsKey(c))
                {
                    dic.Add(c, new List<char>());
                }

                dic[c].Add(c);
            }

            var result = new List<string>();

            while (dic.Any(c => c.Value.Any()))
            {
                var tmpResult = new List<char>();

                foreach (var key in dic.Keys)
                {
                    if (dic[key].Any())
                    {
                        tmpResult.Add(key);
                        dic[key].Remove(key);
                    }
                }

                result.Add(new string(tmpResult.ToArray()));
            }

            return result.ToArray();
        }
    }
}

输出1:

AB1 AB1 AB1 AB1 AB1 AB1 AB1 

输出2:

AB1 AB1 AB1 AB1 AB1 AB1 AB1 B1 B1 B1 B1 B1 B1 B1 B1 B1 1 1 1 1 1 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-25
    • 1970-01-01
    • 2023-01-22
    • 1970-01-01
    相关资源
    最近更新 更多