提问者:小点点

一个方法的实现,该方法使用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);
    }
}

共1个答案

匿名用户

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

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