gpt4 book ai didi

ruby - 为什么我不能按 `count` 对字符串数组进行排序?

转载 作者:太空宇宙 更新时间:2023-11-03 18:11:52 26 4
gpt4 key购买 nike

使用这段代码:

line = ("Ignore punctuation, please :)")

string = line.strip.downcase.split(//)
string.select! {|x| /[a-z]/.match(x) }
string.sort_by!{ |x| string.count(x)}

结果是:

["r", "g", "s", "l", "c", "o", "o", "p", "u", "i", "t", "u", "a", "t", "i", "a", "p", "n", "e", "e", "n", "n", "e"]

按计数排序在这种情况下不起作用吗?为什么?有没有更好的方法来按频率隔离单词?

最佳答案

根据您的评论,我想您想要按频率和字母顺序对字符进行排序。当唯一的 sort_by! 标准是 string.count(x) 时,具有相同字符数的频率组可能会相互混合出现。要按字母顺序对每个组进行排序,您必须在 sort_by! 方法中添加第二个条件:

line = ("Ignore punctuation, please :)")

string = line.strip.downcase.split(//)
string.select! {|x| /[a-z]/.match(x) }
string.sort_by!{ |x| [string.count(x), x]}

那么输出就是

["c", "g", "l", "r", "s", "a", "a", "i", "i", "o", "o", "p", "p", "t", "t", "u", "u", "e", "e", "e", "n", "n", "n"]

关于ruby - 为什么我不能按 `count` 对字符串数组进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32512744/

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