2013-12-23 55 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));