classProgram{staticvoidMain(string[]args){//计算字符串中每种字符出现的次数(面试题)。//&ldquoWelcometoChina,beijing&rdq
class Program
{
static void Main(string[] args)
{
//计算字符串中每种字符出现的次数(面试题)。
//“Welcome to China , beijing”,
//不区分大小写,打印“W2”“e 2”“o 3”……
/*思路:1 将字符串都转换为小写形式,否则 大小写会算各一个
* 2 以字符为键 每个字符出现的次数为值 建立 Dictionary<char,int>泛型集合
* 3 将字符串转换为字符数组
* 4 循环遍历每个字符,加入集合中作为键,其对应的值初始为1
* 5 在加入键之前做一个判断,由于集合中的键不能重复,所以判断如果键中已经还有该字符
* 则不再加入该键,只把他的值+1
* 6 去除字符串中的空格 char.isLetter() 如果是字母,进行操作5
* 7 总结:主要是泛型集合的应用
*/
//例句:
//string sentences="Welcome to China , beijing";
Console.WriteLine("请输入一段字母");
string sentences = Console.ReadLine();
//将字符串都转换为小写形式
sentences = sentences.ToLower();
//建立泛型集合
Dictionary<char,int> dict=new Dictionary<char,int>();
//将字符串变成字符数组
char[] chs=sentences.ToCharArray();
//遍历每一个字符
for (int i = 0; i < chs.Length; i++)
{
//通过char的方法判断是否为字母,如果为字母,则进行下面的操作,
//否则不操作
if (char.IsLetter(chs[i]))
{
//如果不包含该键,则加入集合中
if (!dict.ContainsKey(chs[i]))
{
//将每个字符加入集合中对应键,其值初始为1
dict.Add(chs[i], 1);
}
else
{
//否则,包含该键,只将其对应的值+1即可 值的类型为int
//dict[chs[i]] = dict[chs[i]] + 1;
dict[chs[i]]++;
}
}
}
//循环遍历输出集合中的键 值
foreach (KeyValuePair<char,int> kv in dict)
{
Console.WriteLine("字母:{0}出现了{1}次。",kv.Key,kv.Value);
}
Console.ReadKey();
}
}
