我需要遍历一个字符串数组,并知道我之前是否看过一个特定的字符串值.通常,我会用其他语言写这样的东西:
String oldValue="";
String newValue;
for (i=0;i<myarray.Length;i++)
{
newValue=myarray[i];
if (oldValue==newValue)
break;
...
oldValue=newValue;
}
Run Code Online (Sandbox Code Playgroud)
但是,这在C#中不起作用,因为字符串是不可变的.如果我只是替换整个字符串,看起来我可以使用正则表达式执行此操作,但这似乎是额外的开销.其他人以前怎么处理这个?
谢谢
我不确定我是否理解你的问题,但如果你打算检测数组中重复的第一个字符串,你需要记住所有这些.我建议使用HashSet,所以至少它在O(n)中运行,如下所示:
HashSet<string> prevSet = new HashSet<string>();
foreach ( string str in myArray )
if ( !prevSet.Add(str) ) return str;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
571 次 |
| 最近记录: |