c# 如何判断字符串中相同字符串的个数 (相同字符在字符串中出现的次数)

来源:互联网 发布:如何预防网络成瘾 编辑:程序博客网 时间:2024/05/17 06:01

方法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();
复制代码
0 0
原创粉丝点击