首页 新闻 会员 周边

找出一个字符串中出现次数第二多的字符

0
悬赏园豆:5 [已解决问题] 解决于 2015-12-02 10:20
private static void Find(string input, int seq)
{
    var chars = input.Distinct().ToList();
    List<int> count = new List<int>();
    for (int i = 0; i < chars.Count(); i++)
    {
        count.Add(input.Split(chars[i]).Count() - 1);
    }
    count.Sort();
    for (int i = 0; i < chars.Count(); i++)
    {
        if (input.Split(chars[i]).Count() - 1 == count[count.Count() - seq])
        {
            Console.WriteLine(chars[i]);
        }
    }
}

这是一道面试题:《找出一个字符串中出现次数第二多的字符》

以上是我整理的当时笔试时写的代码,面试官说我写的太多!问我怎么改进我没有答上来。

我今天想了一下午,还是失败了。我最少也需要这些代码。

你们有什么方法吗?请给出最短的代码。最好一个for循环就解决问题。或者更短!

你们有什么好的思路????

问题补充:

只能用一个函数。

天外归云的主页 天外归云 | 菜鸟二级 | 园豆:368
提问于:2015-12-01 17:46
< >
分享
最佳答案
1
            string SandKing = "AAAAAAAAAAAAAABCDEFERIYWEUIRYFUI#@Y&*TSDGFSDYWETYFUSDFSFWARWE";
            char[] hj= SandKing.ToCharArray();

            var query = from s in hj
                        group s by s into sg
                        orderby sg.Count() descending
                        select new
                        {
                            ClassID = sg.Key,
                            Count = sg.Count()
                        };
            foreach (var item in query.Skip(1).Take(1))
            {
                Console.WriteLine("出现元素第二多的是:"+item.ClassID);
            }
收获园豆:5
需要格局 | 老鸟四级 |园豆:2145 | 2015-12-02 09:31

Linq棒棒的!

天外归云 | 园豆:368 (菜鸟二级) | 2015-12-02 10:19
其他回答(1)
0

这种网上一搜一片的问题,搜搜不就行了

之奇一昂 | 园豆:1421 (小虾三级) | 2015-12-01 18:38
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册