Реализация метода, который находит первый неповторимый символ в строке с помощью Linq, проходя через строку только один раз - PullRequest
0 голосов
/ 17 июня 2020

Мне нужно реализовать метод, который находит первый символ из строки, которая не повторяется, используя методы 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 Ответ

4 голосов
/ 17 июня 2020
public char? GiveTheFirstCharThatDoesntRepeat(string givenString)
{
    return givenString
        .GroupBy(c => c)
        .FirstOrDefault(grp => grp.Count() == 1)?
        .Key;
}

Обратите внимание, что следует использовать char?, потому что возможно, что givenString может содержать только повторяющиеся символы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...