最好的方法是:给定一个字符串a和一组字符串c,按a在字符串中的位置的非递减顺序排列集合中的字符串。
例如,
A= abc
C= [deabc, abc, dabc, dad]
Sorted C= [abc, dabc, deabc]
我的想法是遍历集合并将其放入hashmap/dictionary中,并将c[i]中的位置a作为索引。然后从hashmap构造已排序的集合。这不是家庭作业问题。只是想知道有效的方法/算法任何指针都会有帮助。
最佳答案
以下是LINQ的一个简单方法:
var SortedC = C.OrderBy (d => d.IndexOf(A)).ToArray();
注意,不包含A的字符串将在开头排序,因为
IndexOf
返回-1
此外,具有相同索引的字符串的行为是未定义的,除非提供.ThenBy
排序来处理这些行为,否则将以任意顺序返回。