这是后缀版本: -
13 1 - 2 / 3 5 + *
Run Code Online (Sandbox Code Playgroud)
要进行转换,将其解析为普通的后缀解析器,但将元素作为字符串存储在堆栈中,而不是作为值:
"13"
"1"
"-"
Run Code Online (Sandbox Code Playgroud)
当你得到一个像上面这样的运算符时,转换为单个字符串并在其周围加上括号: -
"(13-1)"
Run Code Online (Sandbox Code Playgroud)
继续: -
"(13-1)"
"2"
"/"
Run Code Online (Sandbox Code Playgroud)
变为: -
"((13-1)/2)"
Run Code Online (Sandbox Code Playgroud)
继续: -
"((13-1)/2)"
"3"
"5"
"+"
Run Code Online (Sandbox Code Playgroud)
变为: -
"((13-1)/2)"
"(3+5)"
Run Code Online (Sandbox Code Playgroud)
最后:-
"((13-1)/2)"
"(3+5)"
"*"
Run Code Online (Sandbox Code Playgroud)
结束为: -
"((13-1)/2)*(3+5)"
Run Code Online (Sandbox Code Playgroud)
您可以将"*"视为特殊情况,并从组合版本中省略它.