【发布时间】:2017-01-01 10:40:34
【问题描述】:
我有一个字符串,简化后的"12345" 已排序。字符串可以包含数字 (0-9) 或字母 (a-z)。在混合使用的情况下,自然排序顺序。我需要一种方法来验证这是否属实。
尝试使用 linq 技术:
string items1 = "2349"; //sorted
string items2 = "2476"; //not sorted, 6<>7
bool sorted1 = Enumerable.SequenceEqual(items1.OrderBy(x => x), items1); //true
bool sorted2 = Enumerable.SequenceEqual(items2.OrderBy(x => x), items2); //false
但也可以是降序排列。
那有没有更好的办法
string items3 = "4321";
bool sorted3 = Enumerable.SequenceEqual(items3.OrderBy(x => x), items3) || Enumerable.SequenceEqual(items3.OrderByDescending(x => x), items3);
检查一个字符串是否已排序?也许一些内置的解决方案?
【问题讨论】:
-
如果字符串包含字母怎么办?你刚刚向我们展示了最好的情况。如果字符不是英文字母(例如
-或?)怎么办? -
@c0rd 所以
123abc和abc123和ab12cd34被认为是排序的? -
@user3185569 "123abc" 或 "cba321" 有效
-
请定义“更好”。是“更快”还是“更具可读性”或“消耗更少的内存”?
标签: c# .net string linq sorting