gpt4 book ai didi

c# - C# 字典序排序

转载 作者:太空宇宙 更新时间:2023-11-03 21:13:57 25 4
gpt4 key购买 nike

我有这个用于排序字符串的代码:

 class Program
{
static void Main()
{

int x = Convert.ToInt32(Console.ReadLine());
List<string> sampleList = new List<string>();

for (int i=0; i<x; i++)
{
string word = Console.ReadLine();
sampleList.Add(word);
}


foreach (string s in SortByLength(sampleList))
{
Console.Write(s);
}
Console.ReadLine();
}

static IEnumerable<string> SortByLength(IEnumerable<string> e)
{
// Use LINQ to sort the array received and return a copy.
var sorted = from s in e
orderby s.Length descending
select s;
return sorted;
}
}

这段代码按长度对字符串进行排序,我该如何按长度和字典顺序排序?

例子

//Input
4
abba
abacaba
bcd
er

//Output
abacabaabbabcder

在这种情况下工作正常,但是当我有

//Input
5
abba
ebacaba
bcd
er
abacaba

//Output
ebacabaabacabaabbabcder

我的第一个字符串是 ebacaba,这是错误的。

最佳答案

编辑:

默认情况下,非字符在词法上比字符小,因此,您可以利用它并省略 ThenBy 但仍然会得到与此相同的结果(来源 Matthew Watson) :

string str = "abba ebacaba bcd er abacaba output ebacabaabacabaabbabcder";
string[] strs = str.Split(' ').OrderBy(x => x).ToArray(); //same result, but shorter

原文:

使用 OrderByThenBy

string str = "abba ebacaba bcd er abacaba output ebacabaabacabaabbabcder";
string[] strs = str.Split(' ').OrderBy(x => x).ThenBy(x => x.Length).ToArray();

您将获得:

abacaba //aba is earlier than abb
abba
bcd
ebacaba
ebacabaabacabaabbabcder
er

关于c# - C# 字典序排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35727294/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com