Ruby 如何编写用于解码压缩字符串的递归和最佳解决方案?
我在网上发现了一个问题陈述,当时我正试图用ruby解决它 输入和输出是不言自明的 例1,输入: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
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"