C# 查找字符串中元素的快速算法

C# 查找字符串中元素的快速算法,c#,pattern-matching,C#,Pattern Matching,我是算法方面的新手,我需要实现一个快速搜索来实现这一点。例如,我有这个序列 seq ="1111111145555666672222222222222222221111"; 我有要搜索的元素=“1” 我需要一个算法(尽可能快)给我,或者元素的数量(“1”)存在于seq中,或者元素的数量在顺序上不同于“1”。从您提供的示例字符串来看,该字符串基本上是未排序的。在这种情况下,计算字符数的唯一方法是对字符串进行一次完整的遍历 int count = 0; foreach(char c in inpu

我是算法方面的新手,我需要实现一个快速搜索来实现这一点。例如,我有这个序列

seq ="1111111145555666672222222222222222221111";
我有要搜索的元素=“1”


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

从您提供的示例字符串来看,该字符串基本上是未排序的。在这种情况下,计算字符数的唯一方法是对字符串进行一次完整的遍历

int count = 0;
foreach(char c in inputstring)
{
    if(c.Equals('1'))
    {
      count++;
    }
}
Debug.WriteLine(string.Format("Count: {0}", count));
使用
Count
扩展方法是一种快速而肮脏的方法:

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

使用正则表达式,您可以快速找到所有匹配项及其索引

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

问题不是很清楚,但如果您想计算字符串中有多少个“1”,只需在字符串上循环即可

int count = 0;
foreach(char c in inputstring)
{
    if(c.Equals('1'))
    {
      count++;
    }
}
Debug.WriteLine(string.Format("Count: {0}", count));

你只是想让我们提供代码?看起来像是家庭作业。你试过什么?给我们看一些你的代码。这个算法需要在互联网上找到所有的“1”还是仅仅在字符串中?@user3129195,这是一个非常简单的任务,你应该自己试试。尝试一些东西可以让你在某个时候发现一些很酷的东西。我相信海报要求他们的家庭作业的解决方案应该是快速的。你可以在GPU上运行正则表达式,使其快速。你能提供代码吗。