C# 数组字符串分组到特定集合
我有一个由多组字母数字字符组成的数组,我想将它们分组。 例如: 数组1[]={aaaaaaaaabbbbbb 1111111} 需要分组为AB1、AB1、AB1 我该怎么做 有时字符数可能不相等,例如可能有6个A、5个B和6个1C# 数组字符串分组到特定集合,c#,arrays,string,sorting,C#,Arrays,String,Sorting,我有一个由多组字母数字字符组成的数组,我想将它们分组。 例如: 数组1[]={aaaaaaaaabbbbbb 1111111} 需要分组为AB1、AB1、AB1 我该怎么做 有时字符数可能不相等,例如可能有6个A、5个B和6个1 using System; using System.Collections.Generic; using System.Linq; namespace ConsoleApp25 { class Program { static voi
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();
}
}
}
输出2:
AB1 AB1 AB1 AB1 AB1 AB1 AB1 B1 B1 B1 B1 B1 B1 B1 B1 B1 1 1 1 1 1
您好,您已经更正了问题。数组从openCV haar级联处理中获取数据。我想将其分组,以便与模板进行比较。那么,当字符不等于您上面所说的字符时,输出结果会是什么?最后一组将只是“AB”如何将“ABB111”拆分为多个组?因此一组中已使用的字符不应在下一组中使用?如果它是AB112?我猜是
AB12
,1
?分组规则不是很清楚。。。
AB1 AB1 AB1 AB1 AB1 AB1 AB1 B1 B1 B1 B1 B1 B1 B1 B1 B1 1 1 1 1 1