最好的方法是:给定一个字符串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排序来处理这些行为,否则将以任意顺序返回。

09-30 14:16
查看更多