Проверьте, содержит ли массив символов отличные от разрешенных символов - PullRequest
0 голосов
/ 12 мая 2018

Моя проблема в том, что у меня есть массив символов длиной 4, который в основном представляет слово (этот массив является ключом в dictionary<char[],int>, хотя это не должно иметь значения). Мне нужно проверить, состоят ли эти слова только из разрешенных символов, в данном случае {A, T, C, G}.

Таким образом, все следующие слова будут действительны: AAAA, GGGG, GCGC, ATAT, ATGC, CCGA и т. Д.

Хотя следующие не будут: AFGC, AAAS, TGCW и т. Д.

Я бы хотел избежать преобразования в строку из-за производительности. Моя идея примерно такая:

if (word.Contains(!'ACTG'))

Что должно представлять: If (слово массива содержит символы, отличные от символов A и / или C, и / или T и / или G =>, возвращающих false).

Проблема в том, что я не знаю, как написать этот синтаксис мудрым (если это даже возможно сделать таким простым способом).

1 Ответ

0 голосов
/ 12 мая 2018

LINQ отлично подходит для этого:

char[] allowed = { 'A', 'T', 'C', 'G' };
if (word.Any(c => !allowed.Contains(c)))
{
    // BZZZZTT! Bad character in word
}
...