当前位置: 代码迷 >> 高性能计算 >> 怎么查找多条信息中是否匹配已有的项
  详细解决方案

怎么查找多条信息中是否匹配已有的项

热度:7533   发布时间:2013-02-26 00:00:00.0
如何查找多条信息中是否匹配已有的项
System.IO.StreamReader my = new System.IO.StreamReader(Server.MapPath(@"IP.txt"), System.Text.Encoding.Default);
  string line;
  int i = 0,
  soso = 0,
  baidu = 0,
  sogou = 0,
  youdao = 0,
  yahoo = 0;
  while ((line = my.ReadLine()) != null)
  {
  i++;
  if (line.Contains("Sosospider"))
  {
  soso++;
  }
  if (line.Contains("Baiduspider"))
  {
  baidu++;
  }
  if (line.Contains("Sogou"))
  {
  sogou++;
  }
  if (line.Contains("YoudaoBot"))
  {
  youdao++;
  }
  if (line.Contains("Yahoo! Slurp"))
  {
  yahoo++;
  }
   
  Response.Write(line + "<br />");

  }

-------------------------------------------------------------------

我是用一个集合存放Sosospider, Sogou等这些关键字,然后毎读一行数据就循环和集合中的关键字对比,匹配的话该累计值+1。不知这类算法如何优化,请教下大家。或者您对这个需求有什么建议,我洗耳恭听,谢谢。

------解决方案--------------------------------------------------------
用两个ArrayList,一个存关键字,一个存统计数。

C# code
 while ((line = my.ReadLine()) != null)            {                i++;                for (int d = 0; d < keyword.Count; d++)                {                    if (line.Contains(keyword[d].ToString().Trim()))                    {                        int kc = Convert.ToInt16(keycounter[d]);                        keycounter[d] = (kc + 1).ToString().Trim();                    }                }                Response.Write(line + "<br />");            }
------解决方案--------------------------------------------------------
i*j在很多情况下是远大于i+j的
  相关解决方案