Ruby 如何编写用于解码压缩字符串的递归和最佳解决方案?

Ruby 如何编写用于解码压缩字符串的递归和最佳解决方案?,ruby,Ruby,我在网上发现了一个问题陈述,当时我正试图用ruby解决它 输入和输出是不言自明的 例1,输入:2[abc]3[ab]c 输出:abababac 说明:2次abc和3次ab然后c 例2 输入:2[3[a]b] 输出:aaabaaab 我试过这个, 但它不适用于多个级别 num = 1 str = "" "3[abc]4[ab]2[3[a]b]c".each_char do |ch| if ch.to_i != 0 num = ch elsif

我在网上发现了一个问题陈述,当时我正试图用ruby解决它

输入和输出是不言自明的

例1,输入:
2[abc]3[ab]c

输出:
abababac

说明:
2次
abc
3次
ab
然后
c

例2 输入:
2[3[a]b]

输出:
aaabaaab

我试过这个, 但它不适用于多个级别

num = 1
str = ""
"3[abc]4[ab]2[3[a]b]c".each_char do |ch|
  if ch.to_i != 0
    num = ch
  elsif ch == "["
    next
  elsif ch == "]"
    num.to_i.times { print str }
    str = ""
    num = 1
  else
    str << ch
  end
end
num=1
str=“”
“3[abc]4[ab]2[3[a]b]c”。每个字符都有|
如果我是中国人0
num=ch
elsif ch==“[”
下一个
elsif ch==“]”
num.to_i.times{print str}
str=“”
num=1
其他的
str
我们可以在自由间距模式下编写正则表达式,使其能够自我记录

/
(\d+)     # match one or more digits, save to capture group 1 
\[        # match '[' 
(\p{L}+)  # match one or more letters, save to capture group 2
\]        # match ']'
/x        # invoke free-spacing regex definition mode
第一场比赛,

$1 #=> "2"
$2 #=> "abc"
因此,块变为

"abc"*2
  #=> "abcabc"

“我在寻找递归调用”-通常从可以调用的方法或过程开始。我尝试过,但找不到解决方案。
$1 #=> "2"
$2 #=> "abc"
"abc"*2
  #=> "abcabc"