C#中统计字符串出现的次数

C#统计字符串中字符出现的次数

方法1:自定义类

class CharNum
    {
        private char c;
        private int num;


        public char C
        {
            get { return c; }
        }

        public int Num
        {
            get { return num; }
            set { num = value; }
        }

        public CharNum(char ch)
        {
            this.c = ch;
            this.num = 1;
        }
    }
static void Main(string[] args)
    {
       /* */string s = "abbbcgg";
        IList<char> alist = new List<char>();
        for (int i = 0; i < s.Length; i++)
        {
            if (!alist.Contains(s[i]))
                alist.Add(s[i]);
        }
        char[] c = (char[])alist.ToArray();
        int length = 0;
        CharNum[] data = new CharNum[c.Length];
        for (int j = 0; j < s.Length; j++)
        {
            CharNum cn = new CharNum(s[j]);
            bool plus = false;
            if (length == 0)
            {
                data[length] = cn;
                length++;
            }
            else
            {
                for (int k = 0; k < length; k++)
                {
                    if (data[k].C == cn.C)
                    {
                        data[k].Num++;
                        plus = true;
                        break;
                    }
                }
                if (!plus)
                {
                    data[length] = cn;
                    length++;
                }
            }
        }
        for (int i = 0; i < data.Length; i++)
        {
            Console.WriteLine("{0}:{1}",data[i].C.ToString(), data[i].Num.ToString());
        }
        Console.ReadKey();
}

方法2:键值集合 Dictionary<char, int>

Dictionary<char, int> dic = new Dictionary<char, int>();
            String s = "aaabbs";
            char[] chardata = s.ToCharArray();

            foreach (char c in chardata)
            {
                if (!dic.ContainsKey(c))
                {
                    dic.Add(c, 1);
                }
                else
                {
                    dic[c] = dic[c] + 1;
                }
            }
            foreach (KeyValuePair<char, int> item in dic)
            {
                Console.WriteLine("{0}出现{1}次", item.Key, item.Value);
            }
            Console.ReadLine();

方法3:哈希表

Hashtable ht = new Hashtable();
            string sr = "aaabbcddddd";
            char[] cr = sr.ToCharArray();
            foreach (char ch in cr)
            {
                if (ht.ContainsKey(ch))
                {
                    int i = (int)ht[ch];
                    ht.Remove(ch);
                    ht.Add(ch, ++i);
                }
                else
                    ht.Add(ch, 1);
            }
            foreach (DictionaryEntry dicEntry in ht)
            {
                Console.WriteLine("{0}出现{1}次", dicEntry.Key, dicEntry.Value);
            }
            ArrayList alist = new ArrayList(ht.Values);
            alist.Sort();
            object o = (object)alist[alist.Count - 1];
            foreach (DictionaryEntry dicEntry in ht)
            {
                if (dicEntry.Value == o)
                {
                    string str = dicEntry.Key.ToString();
                    Console.WriteLine("出现次数最多的字符:{0},共{1}次", str, o.ToString());
                    break;
                }
            }
            Console.ReadLine();

方法4:LINQ

string s = "aaabccccef";
        char[] c = s.ToCharArray();
        var cc = c.GroupBy(e => e).OrderByDescending(e => e.Count()).ToList();
        for (int i = 0; i < cc.Count; i++)
        {
            Console.WriteLine("{0}\t{1}", cc[i].Key.ToString(), cc[i].Count().ToString());
        }
        var ccc = c.GroupBy(e => e).OrderByDescending(e => e.Count()).First().ToList();

        Console.WriteLine("{0}出现{1}次!", ccc[0].ToString(), ccc.Count().ToString());
        Console.ReadKey();

打赏一个呗

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦