c# - 使用 Linq 在字符串中查找第一个不可重复字符的方法的实现,同时只穿过字符串一次
问题描述
我必须实现一种从不重复的字符串中找到第一个字符的方法,同时使用 Linq 方法并且不多次遍历字符串。这就是我到目前为止所拥有的,虽然它确实使用了 Linq 方法,但它多次穿过字符串。有谁知道如何解决这个问题?
public class StringUsingLinq
{
string givenString;
public char GiveTheFirstCharThatDoesntRepeat()
{
Func<char, bool> noRepeat= x => givenString.IndexOf(x) == givenString.LastIndexOf(x);
return givenString.First(noRepeat);
}
}
解决方案
public char? GiveTheFirstCharThatDoesntRepeat(string givenString)
{
return givenString
.GroupBy(c => c)
.FirstOrDefault(grp => grp.Count() == 1)?
.Key;
}
注意char?
应该使用,因为它givenString
可能只有重复字符。
推荐阅读
- r - bnlearn 错误:条件概率分布的数量错误
- apache - 在Debian机器中的Apache中配置IP地址
- java - Spark的递归方法实现问题
- ruby-on-rails - 当数据旁边有[FILTERED]时,它在rails中意味着什么
- java - Java中的静态变量和实例块
- mysql - 如何指定每个评论在 Reactjs 中有另一个评论/回复?
- azure - Azure 区域 - “阶段”是什么意思?
- c# - C# 仅当列表中存在列名时才从 CSV 文件中读取列
- wordpress - WooCommerce“产品类别列表”小部件似乎无法从可用小部件列表中选择
- flutter - 提供导航功能后对话框不消失