我必须实现一个方法,从一个不重复本身的字符串中找到第一个字符,同时使用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
可能只有重复字符。