如何使用 C# 打印字符串中的重复字符?

什么是重复字符?

在字符串中,重复字符指的是在同一字符串中出现两次或以上的字符。这些字符可以是相邻的,也可以是在字符串的不同位置出现。

如何使用 C# 打印字符串中的重复字符?

使用 for 循环

可以使用 for 循环遍历字符串中的每个字符,并计算该字符在字符串中出现的次数。在计算出次数后,可以将该字符和出现次数打印出来。下面是使用 for 循环实现的样例代码:

string str = "Hello World";

for (int i = 0; i < str.Length; i++)

{

int count = 0;

for (int j = 0; j < str.Length; j++)

{

if (str[i] == str[j])

{

count++;

}

}

if (count > 1)

{

Console.WriteLine("字符 {0} 在字符串中出现了 {1} 次", str[i], count);

}

}

在上面的代码中,外层的 for 循环遍历字符串中的每个字符,内层的 for 循环计算该字符在字符串中出现的次数。如果次数大于 1,则打印出该字符和出现次数。

使用 LINQ

使用 LINQ 可以更简洁地实现以上功能。可以使用 GroupBy() 方法分组计算字符串中每个字符的出现次数,并过滤掉出现次数不大于 1 的字符。下面是使用 LINQ 实现的样例代码:

string str = "Hello World";

var result = str.GroupBy(c => c)

.Where(g => g.Count() > 1)

.Select(g => new { Character = g.Key, Count = g.Count() });

foreach (var item in result)

{

Console.WriteLine("字符 {0} 在字符串中出现了 {1} 次", item.Character, item.Count);

}

在上面的代码中,使用 GroupBy() 方法对字符串中的每个字符分组,并使用 Where() 方法过滤出现次数大于 1 的字符。最后使用 Select() 方法将分组后的结果转化为一个包含字符和出现次数的匿名类型。最后使用 foreach 循环遍历结果并打印出字符和出现次数。

使用 Dictionary

使用 Dictionary 可以将字符串中每个字符的出现次数存储在一个键值对集合中。下面是使用 Dictionary 实现的样例代码:

string str = "Hello World";

Dictionary dict = new Dictionary();

foreach (char c in str)

{

if (dict.ContainsKey(c))

{

dict[c]++;

}

else

{

dict.Add(c, 1);

}

}

foreach (var pair in dict)

{

if (pair.Value > 1)

{

Console.WriteLine("字符 {0} 在字符串中出现了 {1} 次", pair.Key, pair.Value);

}

}

在上面的代码中,使用 foreach 循环遍历字符串中的每个字符,并将字符和出现次数存储在 Dictionary 中。最后使用 foreach 循环遍历 Dictionary 中的每个键值对,打印出出现次数大于 1 的字符和出现次数。

总结

以上三种方法都可以用于打印字符串中的重复字符。其中使用 LINQ 可以提供更简洁而优美的实现方式。使用 Dictionary 可以将处理结果存储在一个集合中,方便后续的使用。

后端开发标签