给定一个有*,+,-,/的数学方程,求反



我正在处理一个低级别的Ruby挑战,它看起来很直接,但我不知道如何反转字符串并保持整数不变。

这个问题想让我颠倒如下:

solve("a+b-c/d*30") = "30*d/c-b+a"

我的答案:

def solve(eq)
eq.reverse
end

输出:

Expected: "y/b*100", instead got: "y/b*001"

提前谢谢。

如果变量名可能包含多个字母,您可能希望在四个运算符上拆分字符串。

def solve(eq)
eq.split(/([+*/-])/).reverse.join
end
solve("az+b-c/d*30")
#=> "30*d/c-b+az"

请参阅String#split,特别是第三段。

我的解决方案:

def solve(eq)
eq.split(/(d*)/).reverse.join
end
source = "a+b-c/d*30"
wanted = "30*d/c-b+a"
p wanted
p solve(source) 
p wanted == solve(source) 

我取源字符串并用/(d*)/(将其拆分

我得到:

["a", "", "+", "", "b", "", "-", "", "c", "", "/", "", "d", "", "*", "30"]

把30看作一根绳子。d*将所有数字捕获为一个表达式。()的意思是,拆分参数应该是结果的一部分。

此数组反转并重新连接。