ruby - 设置计数器、递增和返回的更简洁的方法?

标签 ruby string-comparison

我正在研究一个问题,我想逐个字符地比较两个长度相等的字符串。对于字符不同的每个索引,我需要将计数器加 1。现在我有这个:

def compute(strand1, strand2)
    raise ArgumentError, "Sequences are different lengths" unless strand1.length == strand2.length

    mutations = 0
    strand1.chars.each_with_index { |nucleotide, index| mutations += 1 if nucleotide != strand2[index] }
    mutations

    end
end

我是这门语言的新手,但对我来说这感觉非常非 Ruby。是否有一个单行程序可以合并设置计数器、递增它然后返回它的过程?

我的思路是选择所有不匹配的字符,然后获取结果数组的大小。但是,据我所知,没有 select_with_index 方法。我也在研究 inject 但似乎无法弄清楚我将如何在这种情况下应用它。

最佳答案

可能最简单的答案就是计算差异:

strand1.chars.zip(strand2.chars).count{|a, b| a != b}

关于ruby - 设置计数器、递增和返回的更简洁的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30809093/

相关文章:

ruby-on-rails - 如何从应用程序 Controller 中读取 ruby​​ on rails 配置值

ruby - 为什么叫 cucumber 和 capybara ?

ruby-on-rails - Rails-ujs 是必需的,但未加载

postgresql - 怎么办 'any(::text[]) ilike::text'

java - 如何比较两个 CharSequences 中的字符

c++ - Arduino - 将拆分字符串与另一个字符串进行比较

ruby : the while loop does not work

Ruby - 带索引的数组

javascript - JS比较两个不同数组中某些元素的顺序

android - 按钮文本到字符串