统计Welcome To China中每个字符出现的次数,不考虑大小写
这道题是我学C#多态的时候讲到的一道题
看过老师的解题思路,有更简单的方法
不过我当时在做这个题的时候没有看答案
纯粹是按照自己的解题思路来做的,以下是我的解题思路
还望各位多多指教。
static void Main(string[] args)
{
//统计Welcome To China中每个字符出现的次数,不考虑大小写
string info = "Welcome To China";
info = info.ToLower();//首先把字符串转成小写
List<char> temp = new List<char>();//创建一个char类型的泛型集合
for (int i = 0; i < info.Length; i++)
//字符串可以看成一个char数组,遍历这个char数组的每一项元素
{
if (temp.IndexOf(info[i])==-1&&info[i]!=' ')
//如果这个char数组的当前元素不在我的泛型集合里,且当前这个元素不为空格--> ' '
{
temp.Add(info[i]);//则把这个元素加入进我的泛型集合
}
}//完成循环后,我的char泛型集合里存放的都是拿到的字符串中去掉空格和重复值的数据
int[] jiShu = new int[temp.Count];
//创建一个int数组,用来存放每一个字符出现的次数
for (int i = 0; i < info.Length; i++)//遍历字符串(即char数组)
{
for (int j = 0; j < temp.Count; j++)
//在每一次遍历char数组的时候,把泛型集合的每一项都遍历一次
//跟char数组的当前元素做比较
{
if (temp[j] == info[i])//如果想等
{
jiShu[j] += 1;//就把计数数组的当前元素+1
}
}
}
Dictionary<char, int> result = new Dictionary<char, int>();
//创建一个Dictionary字典集合
for (int i = 0; i < temp.Count; i++)
//遍历存放处理后的字符串数据的泛型集合temp,因为元素个数和计数数组个数相同
//故而遍历谁(temp或jishu)都无所谓
{
result.Add(temp[i], jiShu[i]);
//把temp的每一项作为键,jishu的每一项作为值加入进result字典集合
}
Console.WriteLine("每个字符出现的次数:");
foreach (KeyValuePair<char,int> jz in result)
//遍历result字典集合,把键和值对应输出显示
{
Console.WriteLine("{0}出现了{1}次", jz.Key, jz.Value);
}
Console.ReadKey();
}