首页 > 解决方案 > 使用 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);
    }
}

标签: c#linq

解决方案


public char? GiveTheFirstCharThatDoesntRepeat(string givenString)
{
    return givenString
        .GroupBy(c => c)
        .FirstOrDefault(grp => grp.Count() == 1)?
        .Key;
}

注意char?应该使用,因为它givenString可能只有重复字符。


推荐阅读