繁体   English   中英

遍历字符串数组并与以前的值进行比较

[英]Loop through an array of strings and compare to previous values

我需要遍历一个字符串数组,并知道我之前是否看过特定的字符串值。 通常,我会用其他语言编写如下内容:

String oldValue="";
String newValue;
for (i=0;i<myarray.Length;i++)
{
    newValue=myarray[i];
    if (oldValue==newValue)
        break;
    ...

    oldValue=newValue;

}

但是,这在C#中不起作用,因为字符串是不可变的。 如果我只是替换了整个字符串,则看起来可以使用正则表达式来执行此操作,但这似乎是额外的开销。 其他人以前如何处理?

谢谢

我不确定我是否理解您的问题,但是如果您打算检测数组中重复的第一个字符串,则需要记住所有这些字符串。 我建议使用HashSet,因此至少它可以在O(n)中运行,如下所示:

HashSet<string> prevSet = new HashSet<string>();

foreach ( string str in myArray )
  if ( !prevSet.Add(str) ) return str;

您可以这样做以列出单词频率:

var frequency =
    myarray
        .GroupBy(x => x)
        .Select(x => new
        {
            Value = x.Key,
            Count = x.Count(),
        });

然后,您可以只在Count > 1过滤此列表。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM