gpt4 book ai didi

c# - 按字母顺序排列单词

转载 作者:太空狗 更新时间:2023-10-30 00:51:21 26 4
gpt4 key购买 nike

你会如何按照这些字母对以下单词进行排序?

string[] _words1 = {"road", "apple", "maple", "roam", "wind"};
string _alphabet1 = "irqjfomqwijapfpdpwe";

单词的每个顺序由 _alphabet1 确定,但诀窍是“road”应该在“roam”之后,因为“r”相似,“o”相似,“a”相似,并且“d"出现在 _alphabet1 中的 "m"之后

使用内置数组 .Sort() 及其重载。

这个问题面试出来了,做不出来。面试官说应该使用.Sort()重载来简化代码。

最佳答案

您可以定义自己的扩展 Comparer 的类。基本上,您使用您正在使用的修改后的“字母表”来定义两个字符串相对于彼此的排序方式。

public class MyComparer : Comparer<string>
{
private string _alphabet1 = "irqjfomqwijapfpdpwe";

public override int Compare(string x, string y)
{
var minLength = Math.Min(x.Length, y.Length);

for (var i = 0; i < minLength; i++)
{
var stringXpos = _alphabet1.IndexOf(x[i]);
var stringYpos = _alphabet1.IndexOf(y[i]);

if (stringXpos < stringYpos)
return -1;

if (stringYpos < stringXpos)
return 1;
}

return x.Length < y.Length ? -1 : (x.Length > y.Length) ? 1 : 0;
}
}

然后在调用 Array.Sort 时实例化它:

string[] _words1 = { "road", "apple", "maple", "roam", "wind" };

Array.Sort(_words1, new MyComparer());

排序后 _words1 的内容:

roam
road
maple
wind
apple

关于c# - 按字母顺序排列单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28445021/

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