ruby - 如何创建一个方法来检查 string1 是否可以重新排列为等于 string2?

标签 ruby

我试过编写一个方法,但是当我的代码没有运行时我不确定为什么。

str1 = "cored"
str2 = "coder"

def StringScramble(str1,str2)

  numCombos = str1.length.downto(1).inject(:*)
  arr = []

  until arr.length == numCombos
    shuffled = str1.split('').join
    unless arr.include?(shuffled) 
      arr << shuffled 
    end
  end

  if arr.include?(str1)
    return true
  else 
    return false
  end

end

最佳答案

更新:作为@eugen在评论中指出,有一种更有效的方法:

str1.chars.sort == str2.chars.sort # => true

原答案:

str1.chars.permutation.include?(str2.chars) # => true

关于ruby - 如何创建一个方法来检查 string1 是否可以重新排列为等于 string2?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27688517/

相关文章:

ruby - Ruby 的 stdlib Logger 类是线程安全的吗?

Ruby Mixin 对对象的依赖

ruby - 如何使用 Ruby 转义 Unicode 字符串?

ruby-on-rails - 在 Heroku 上预编译失败,initialize_on_precompile 设置为 false

ruby-on-rails - redirect_to 在救援 block 中的行为

ruby - Linux 上还没有 apt-get install ruby​​1.9.2 吗?

ruby - 使用实例方法扩展我所有的 Mongoid 文档

ruby - 在正则表达式中组合否定字符类

ruby-on-rails - "Or"语句在 Rails 查询中不起作用

ruby-on-rails - 为什么 String#gsub 的内容加倍?