2013-12-23 2 views
0

Я новичок в алгоритмах, и мне нужно было выполнить быстрый поиск, который сделает это. Например, у меня есть эта последовательностьБыстрый алгоритм для поиска и элемент в строке

seq ="1111111145555666672222222222222222221111"; 

и у меня есть элемент для поиска = "1";

Мне нужен алгоритм (как можно быстрее), чтобы дать мне или число элементов («1») существует в seq или количество элементов отличается от «1» в последовательности.

+1

Вы просто хотите, чтобы мы предоставили код? – rene

+4

Похоже, домашнее задание. Что вы пробовали? Покажите нам некоторые из вашего кода. – Dariusz

+1

Должен ли алгоритм найти все «1» в Интернете или просто в строке? –

ответ

1

Из строки примера, которую вы предоставили, похоже, что строка по существу не сортирована. В этом случае единственный способ подсчитать количество символов - сделать один полный проход через строку.

быстрый и грязный способ сделать это было бы с помощью метода Count расширения:

int count=seq.Count(c => c=='1'); 
0

Использование Regex вы можете быстро найти все матчи и их индексы.

 string pattern = "1"; 
    string input = "1111111145555666672222222222222222221111"; 

    foreach (Match m in Regex.Matches(input, pattern)) 
    Console.WriteLine("'{0}' found at index {1}.", 
         m.Value, m.Index); 
+0

Я считаю, что плакат попросил, чтобы решение их домашней работы было быстрым. – StevieB

+1

вы можете запустить регулярное выражение на графическом процессоре, чтобы ускорить его работу –

+0

LMAO. Не могли бы вы предоставить код для этого. – StevieB

0

Вопрос не очень ясен, но если вы хотите подсчитать, сколько «1» находится в строке, просто перейдите по строке.

int count = 0; 
foreach(char c in inputstring) 
{ 
    if(c.Equals('1')) 
    { 
     count++; 
    } 
} 
Debug.WriteLine(string.Format("Count: {0}", count)); 
Смежные вопросы