[英]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.