gpt4 book ai didi

Ruby 在不使用正则表达式的序列中计算字符

转载 作者:数据小太阳 更新时间:2023-10-29 07:22:30 25 4
gpt4 key购买 nike

需要有关计算序列中字符的代码的帮助。

这就是我想要的:

word("aaabbcbbaaa") == [["a", 3], ["b", 2], ["c", 1], ["b", 2], ["a", 3]]
word("aaaaaaaaaa") == [["a", 10]]
word("") == []

这是我的代码:

def word(str)
words=str.split("")
count = Hash.new(0)

words.map {|char| count[char] +=1 }

return count
end

我得到了 word("aaabbcbbaaa") => [["a", 6], ["b", 4], ["c", 1]],这不是我想要的。我想计算每个序列。我更喜欢无正则表达式解决方案。谢谢。

最佳答案

按字符拆分字符串,然后按字符对 block 进行分组,然后按 block 计算字符数:

def word str
str
.chars
.chunk{ |e| e }
.map{|(e,ar)| [e, ar.length] }
end

p word "aaabbcbbaaa"
p word("aaaaaaaaaa")
p word ""

结果:

[["a", 3], ["b", 2], ["c", 1], ["b", 2], ["a", 3]]
[["a", 10]]
[]

关于Ruby 在不使用正则表达式的序列中计算字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19969066/

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