查找所有可能的最长为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