如何实现C#方法:从字符串列表中返回重复n次的单词?
实现查找重复n次单词的方法
方法一:手动用Dictionary统计次数
你可以通过Dictionary<string, int>记录每个单词的出现次数,配合foreach循环完成统计和查找:
var words = new List<String> {"Mike", "Mia" ,"Mike", "Frank" ,"Mike", "Lisa", "Joss", "Frank" }; int number = 3; String find(List<String> lst, int n) { // 初始化字典,键为单词,值为出现次数 var wordCount = new Dictionary<string, int>(); // 遍历列表统计次数 foreach (var word in lst) { if (wordCount.ContainsKey(word)) { // 单词已存在,计数+1 wordCount[word]++; } else { // 单词首次出现,初始化计数为1 wordCount[word] = 1; } } // 遍历字典寻找出现次数等于n的单词 foreach (var pair in wordCount) { if (pair.Value == n) { return pair.Key; } } // 没有找到符合条件的单词时返回null(可根据需求调整为空字符串) return null; } // 调用示例 var result = find(words, number); // result会是"Mike"
方法二:用LINQ简化实现
如果项目允许使用LINQ,可以用更简洁的代码完成需求,核心是通过GroupBy分组后统计每组的元素数量:
using System.Linq; // 需引入LINQ命名空间 var words = new List<String> {"Mike", "Mia" ,"Mike", "Frank" ,"Mike", "Lisa", "Joss", "Frank" }; int number = 3; String find(List<String> lst, int n) { return lst.GroupBy(word => word) .Where(group => group.Count() == n) .Select(group => group.Key) .FirstOrDefault(); // 返回第一个符合条件的单词,无匹配则返回null } // 调用示例 var result = find(words, number); // result会是"Mike"
说明
- 两种方法都能实现需求:手动统计适合理解底层计数逻辑,LINQ写法更简洁高效。
- 如果存在多个出现次数等于n的单词,两种方法都会返回第一个匹配的单词;若要返回所有匹配项,可修改返回类型为
List<string>并调整对应逻辑。
内容的提问来源于stack exchange,提问作者Andrés Calderón
相关产品推荐
相关产品推荐

