c#字符串中统计字符出现次数并排序。

名称名称 2017-08-25 02:45:15
stinrg bb="ABCDEFGHIJ";
string aa = "ABCAAABBCBHHHHBAEEEHAABJBCCABCAEFGHIJGHIJJJJI";
bb中的每个字符aa中的重复的重复次数如下:
A-9次 E-4次 I-3次
B-8次 F-1次 J-6次
C-5次 G-2次
D-0次 H-7次

怎么才能获取string cc=
结果是:ABHJCEIGFD
string cc=ABHJCEIGFD 怎么才能获取这个结果?


也就是说cc是bb中的每个字符aa中出现次数最大的放最左边,大到小排序后出来结果。就是统计出现次数来排序。
...全文
353 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复

            var cc = bb.Select(x => x).GroupJoin(aa.GroupBy(y => y).Select(x => new { aKey = x.Key, aCount = x.Count() }),
                b => b, f => f.aKey,
                (b, grp) => new { b = b, grp = grp })
                .SelectMany(temp => temp.grp.DefaultIfEmpty(),
               (temp, grp) =>
                  new
                  {
                      str = temp.b,
                      i = (grp == null) ? 0 : grp.aCount
                  }).OrderByDescending(x => x.i).Select(x => x.str.ToString());


            string result = string.Join("", cc.ToArray());
橘子皮... 2017-08-25
  • 打赏
  • 举报
回复

 string bb = "ABC";
            string aa = "AABBBCCCC";
            ConcurrentDictionary<string, int> cd = new ConcurrentDictionary<string, int>();

            Parallel.For(0,aa.Length , i => {
                var s = aa.Substring(i, 1);
                cd.AddOrUpdate(s, 1, (key, value) => {
                    return value += 1;
                });
            });
写了一半,下面想不出来怎么写好了
xuzuning 2017-08-25
  • 打赏
  • 举报
回复
            string bb = "ABCDEFGHIJ";
            string aa = "ABCAAABBCBHHHHBAEEEHAABJBCCABCAEFGHIJGHIJJJJI";
            var r = bb.SelectMany(x=> aa.Where(y => x==y)).GroupBy(x =>x).OrderByDescending(x=>x.Count());
            var cc = string.Join("", r.Select(x => x.Key));
            Console.WriteLine(cc);
by_封爱 版主 2017-08-25
  • 打赏
  • 举报
回复

string bb = "ABCDEFGHIJ";
string aa = "ABCAAABBCBHHHHBAEEEHAABJBCCABCAEFGHIJGHIJJJJI";

var qs = aa.GroupBy(d => d).
   Where(d => bb.Contains(d.Key)).
   Select(d => new { k = d.Key.ToString(), c = d.Count() }).
   OrderByDescending(d => d.c).
   Select(d => d.k).ToArray();

string cc = string.Join("", qs);

Response.Write(cc);
引用
ABHJCEIGF
易2017 2017-08-25
  • 打赏
  • 举报
回复
引用 1 楼 xdashewan 的回复:
参考http://www.cnblogs.com/YuanSong/archive/2012/10/16/2725956.html
学习
xdashewan 2017-08-25
  • 打赏
  • 举报
回复
参考http://www.cnblogs.com/YuanSong/archive/2012/10/16/2725956.html
MYsce 2017-08-25
  • 打赏
  • 举报
回复
string aa = "ABCAAABBCBHHHHBAEEEHAABJBCCABCAEFGHIJGHIJJJJI";
string bb = "ABCDEFGHIJ";
var t = aa.GroupBy(g => g).Select(s => new { k = s.Key, c = s.Count() }).OrderByDescending(o => o.c).Select(s1 => s1.k).Where(w => bb.Select(s => s).ToList().Contains(w)).Union(bb);
string cc = string.Join("", t);
Console.WriteLine(cc);

MYsce 2017-08-25
  • 打赏
  • 举报
回复
引用 4 楼 xuzuning 的回复:
            string bb = "ABCDEFGHIJ";
            string aa = "ABCAAABBCBHHHHBAEEEHAABJBCCABCAEFGHIJGHIJJJJI";
            var r = bb.SelectMany(x=> aa.Where(y => x==y)).GroupBy(x =>x).OrderByDescending(x=>x.Count());
            var cc = string.Join("", r.Select(x => x.Key));
            Console.WriteLine(cc);
好像少了个d

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧