假設我有一個排序的字符串列表,如{"a1", "a2", "b0", "b2", "c1", ...}
,並且想要確定從「b」開始的第一個元素的索引。 .NET 4中最快的方式是什麼?內存不是問題。排序列表中的部分鍵匹配<string>
1
A
回答
0
如果「最快」你的意思是「最容易實現的」,那麼
事情大致是這樣的:
static int FirstIndex(this IEnumerable<T> coll, Predicate<T> pred)
{
var it = coll.GetEnumerator();
int index = 0;
while(it.MoveNext())
{
if(pred(it.Current))
{
return index;
}
index++;
}
throw new ObjectNotFoundException();
}
{"a1", "a2", "b0", "b2", "c1"}.FirstIndex(s => s.StartsWith("b"));
或者使用Seq module從F#(需要注意的,我從來沒有使用這些從試C#...這句法也許是錯誤的)。
Seq.findIndex(s => s.StartsWith("b"))(strings);
3
使用此:
var list = new List<string> { "a1", "a2", "b0", "b2", "c1" };
int index = list.FindIndex(x => x.StartsWith("b"));
如果您的清單非常龐大,而且表現是一個問題,那麼請考慮Joel Rondeau在他對您的問題的評論中提到的可能重複的答案。
+0
這太棒了!我使用了'List
相關問題
- 1. 排序在c#/列表基於完全匹配部分匹配
- 2. 排序陣列匹配鍵順序
- 3. 關鍵部分匹配兩列
- 4. 通過部分關鍵字匹配排序
- 5. Linq部分匹配列表中?
- 6. 部分排序列表Python
- 7. 匹配並插入python排序列表
- 8. 使用linq排序和匹配列表
- 9. 列表排序和模式匹配
- 10. 元組列表中部分匹配的列表
- 11. Hamcrest匹配器的子列表/部分匹配?
- 12. Python列表查找與部分匹配
- 13. excel Vlookup部分匹配列表
- 14. C#列表.findall,發現部分匹配
- 15. 匹配排序陣列
- 16. 檢查部分匹配1列表與部分匹配另一個列表 - 可能與列表理解?
- 17. Python排序列表的一部分
- 18. 排序列表的部分和另一
- 19. 部分匹配ObservableCollection <string>對象
- 20. PHP排序數組,匹配關鍵
- 21. R部分字符串匹配 - 排除
- 22. 匹配部分字符串列表<string>在另一個列表中<string>
- 23. C#列表<string>包含部分匹配從另一個列表中<string>
- 24. 部分字符串與新列中的匹配正則表達式匹配 - R
- 25. 優化部分字典鍵匹配
- 26. 如何在for循環中部分匹配Python中的列表?
- 27. 匹配部分
- 28. 部分匹配
- 29. 部分匹配
- 30. 匹配的部分
你的意思是你想要第一個具有「b」的元素的索引作爲第一個字符嗎? (即2) – Toby 2011-03-01 15:01:46
[this]的可能的重複(http://stackoverflow.com/questions/457160/the-most-efficient-algorithm-to-find-first-prefix-match-from-a-sorted-string- arrael) – 2011-03-01 15:05:49
謝謝,喬爾!正是我需要的! – UserControl 2011-03-01 16:16:07