Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
查找所有可能的最长为k的连续子字符串。(答案已在ruby中找到,需要javascript实现)_Javascript_Ruby_String_Split_Substring - Fatal编程技术网

查找所有可能的最长为k的连续子字符串。(答案已在ruby中找到,需要javascript实现)

查找所有可能的最长为k的连续子字符串。(答案已在ruby中找到,需要javascript实现),javascript,ruby,string,split,substring,Javascript,Ruby,String,Split,Substring,我已经在这里找到了解决问题的办法 正如您所看到的,解决方案是使用Ruby语言的。我正在搜索Javascript实现。我不明白“注射”在这里做什么。另外,第二个“map”函数对我来说也很奇怪。如果您只需要能够在javascript即node中运行此代码,而不关心代码的可读性或效率,您可以使用。但它将呈现的代码将非常难看且无法维护。这里的价值只是你有相同的最终结果,而且几乎不费吹灰之力。有时,这可能是一个有用的权衡 假设您有一个名为string\u split.rb的文件 str = "1234"

我已经在这里找到了解决问题的办法


正如您所看到的,解决方案是使用Ruby语言的。我正在搜索Javascript实现。我不明白“注射”在这里做什么。另外,第二个“map”函数对我来说也很奇怪。

如果您只需要能够在javascript即node中运行此代码,而不关心代码的可读性或效率,您可以使用。但它将呈现的代码将非常难看且无法维护。这里的价值只是你有相同的最终结果,而且几乎不费吹灰之力。有时,这可能是一个有用的权衡

假设您有一个名为
string\u split.rb的文件

str = "1234"

def f(s, n)
    return [[]] if s.empty?

    (1..[n, s.length].min)
      .map{|c| f(s[c..-1], n)
      .map{|a| [s[0, c]] + a}}
      .inject(&:+)
end

f(str, 3).each{|arr| puts arr.inspect}
然后在命令行中运行以下命令:

gem install opeal
opal -c string_split.rb > stringSplit.js
# test output of both
ruby string_split.rb
node stringSplit.js
ruby和node都应该呈现相同的输出


如果将
-O
传递给opal compile命令,则可以获得更小的JS文件,但是JS文件将不可移植,如果在节点运行的任何位置安装ruby和opal gem,这可能是正常的

看看文档你的问题是什么?我在你提供的链接中为Ruby问题添加了另一个答案。我提到这一点是为了让它更容易翻译成javascript。(或其别名
reduce
)对所有元素应用二进制操作,例如
[1,2,3]。inject(&:+)
相当于
1+2+3
,因此它返回
6
+
的功能取决于对象。对于数字,它是加法;对于字符串和数组,它是串联。
gem install opeal
opal -c string_split.rb > stringSplit.js
# test output of both
ruby string_split.rb
node stringSplit.js