我有以下代码列出给定字符串的所有可能排列。但由于我笨拙的列表(ruby 数组)操作和函数式编程知识有限,我不得不使用 flatten 来获取结果数组。这几乎是一个黑客。如何重构代码并避免使用(滥用)扁平化?
class String
def remove_char_at(i)
if i==0
self[1..-1]
else
self[0..i-1] + self[i+1..-1]
end
end
end
def permute(str,prefix="")
if str.size==0
prefix
else
str.chars.each_with_index.map do |s,i|
permute(str.remove_char_at(i),prefix+s)
end.flatten
end
end