2013-12-23 32 views
0

我是算法的新手,我需要实现一个快速搜索,使这个。例如我有这个序列快速算法查找和元素字符串

seq ="1111111145555666672222222222222222221111"; 

和我有元素搜索=“1”;

我需要一个算法(尽可能快)给我或元素(“1”)的数量在seq中存在或元素的数量不同于“1”的顺序。

+1

你只是希望我们提供的代码? – rene

+4

看起来像功课。你有什么尝试?向我们展示一些您的代码。 – Dariusz

+1

算法是否必须在互联网上或仅在字符串中查找所有“1”? –

回答

1

从您提供的示例字符串看,它看起来像字符串本质上未排序。在这种情况下,计算字符数的唯一方法是使字符串完整传递。

一个快速和肮脏的方式做到这将是与Count扩展方法:

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

使用正则表达式,你可以迅速找到所有比赛和他们的索引。

 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

您可以在GPU上运行正则表达式以使其更快更快 –

+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));