黑马程序员技术交流社区

标题: 在VS中控制台程序里,怎么做下面的题? [打印本页]

作者: qly2046    时间: 2013-12-16 19:56
标题: 在VS中控制台程序里,怎么做下面的题?
本帖最后由 qly2046 于 2013-12-20 15:30 编辑

计算字符串中每种字符出现的次数。“Welcome to Chinaworld”,不区分大小写,打印“W 2”“e 2”“l 3”……
作者: 再起来    时间: 2013-12-17 10:24
本帖最后由 再起来 于 2013-12-17 10:25 编辑
  1. class Program
  2.     {
  3.         static void Main(string[] args)
  4.         {
  5.             string str = "Welcome to ChinaWorld";
  6.             string[] strs = str.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);//去掉空格
  7.             string str1 = string.Join("", strs);//将去掉空格的字符串数组拼接成一个字符串
  8.             #region MyRegion
  9.             // HashSet<char> set=new HashSet<char>();
  10.             // foreach (char ch in str1)
  11.             // {
  12.             //     set.Add(ch);
  13.             // }
  14.             //char[] chs= set.ToArray();
  15.             //string str2="";
  16.             //for (int i = 0; i < chs.Length;i++ )
  17.             //{
  18.             //    str2 += chs[i];
  19.             //}
  20.             #endregion
  21.             int[] count=new int[str1.Length];//定义一个数组,用来存储字符串每个字符出现的次数
  22.             for (int i = 0; i < str1.Length;i++ )//依次找出字符串中每个字符出现的次数
  23.             {
  24.                 int time=0;//字符出现的次数
  25.                 int position=-1;
  26.                 do
  27.                 {
  28.                     position=str1.IndexOf(str1[i],position+1);
  29.                     if (position!=-1)
  30.                     {
  31.                         time++;
  32.                     }
  33.                 } while (position!=-1);
  34.                 count[i] = time;
  35.             }
  36.             for (int i = 0; i < str1.Length;i++ )
  37.             {
  38.                 Console.Write("\"{0}{1}\"\t", str1[i], count[i]);
  39.             }
  40.             Console.ReadKey();
  41.         }
  42.     }
复制代码

S~3[56UESIW~I)SH(B$9$M6.jpg (16.7 KB, 下载次数: 6)

S~3[56UESIW~I)SH(B$9$M6.jpg

作者: 再起来    时间: 2013-12-17 10:26
亲,你要记得把帖子编辑成已经解决哈,不然木有加分哟
作者: 诱惑灵魂    时间: 2013-12-20 01:01
string str = "Hello World";
            Dictionary<char, int> dic = new Dictionary<char, int>();
            for (int i = 0; i < str.Length; i++)
            {
                if (str[i] == ' ')
                {
                    continue;
                }
                if (dic.ContainsKey(str[i]))
                {
                    dic[str[i]]++;
                }
                else
                {
                    dic.Add(str[i], 1);
                }
            }
            foreach (KeyValuePair <char,int>kv in dic)
            {
                Console.WriteLine("字符{0}{1}次",kv.Key,kv.Value);
            }
            Console.ReadKey();
通过循环添加到集合中输出就ok了






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2