【发布时间】:2019-12-24 06:41:13
【问题描述】:
我有这个包含大写字母和非大写字母(有时还有数字)的单词数组:
my_array = ['ZV2', '4Q3', 'abDc', 'zQ2', 'Def', '4q3', 'Abdc', 'ABDC', 'def', 'zv2', 'DeF', 'zV2', 'DEF']
我想分成几个没有重复单词的数组:
my_array1 = ['ZV2', '4Q3', 'abDc', 'zQ2', 'Def']
my_array2 = ['4q3', 'Abdc', 'def', 'zv2']
my_array3 = ['ABDC', 'DeF', 'zV2'] 和
my_array4 = ['DEF']
最好的方法是什么?
【问题讨论】:
-
您应该编辑以澄清您的问题。 (这是一个有趣的。)如果你这样做,我会投票重新开放,
-
array.each_with_object([]) { |s,a| d=s.downcase; i = a.find_index { |i| a[i].key?(d) ==false }; i.nil? ? (a << { d=> s }) : a[i][d] = s }.map(&:values)。我在手机上写了这个,所以我没有测试,所以也许我犯了一个小错误。其他读者可以检查我的代码吗? —— -
我不知道你想要什么细节。我把想要的输出。所需的输出将用于另一个进程。我不知道如何获得所需的输出,这就是我问这个问题的原因。
-
你可以用一个例子来阐述你的问题,但通常不足以告诉读者你想做什么。例如,
my_array.to_a创建了一个数组集合,其中不包含大小写无关的重复项,但我认为这不是您想要的。您需要以完整且明确的语言陈述您的问题。例如,... -
...(假设我的理解是正确的),“给定一个字符串数组
my_array,我希望创建一个数组partition,其中包含来自my_array的元素数组,这样:1)partition.flatten包含my_array的所有元素;2)对于partition的每个元素a,数组a.map { |s| s.downcase }不包含重复项;3)partition的元素数量为尽可能小。”听起来像法律术语,嗯?你可能不喜欢这个措辞,但我相信它符合完整性和澄清的测试。如果您愿意,可以使用它。