簡體   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