1,978
社区成员
发帖
与我相关
我的任务
分享
string value = ComputeHelper.Compute("False?111:222").Value;
string value = ComputeHelper.Compute("10-1+2-3+4-5+6").Value;
string value = ComputeHelper.Compute("\"QWERTYUIOP{}:\" LIKE \"%ERT%U%\"").Value;
string value = ComputeHelper.Compute("(\"QWERTYUIOP{}:\" LIKE \"%ERT%U\")?1111+1111:2222+2222").Value;
string value = ComputeHelper.Compute("(REPLACE(REPLACE(\"AAAAAAAAKKK\",\"K\",\"M\"),\"A\",\"B\") == \"BBBBBBBBMMM\")?\"HHHHHHHHH\":\"IIIIIIIIII\"").Value;
是的,这是一个 字符串的计算算法——这个算法我写了 一个星期,算法效率是 1-5毫秒(平均 2毫秒)
——————————————————————————————————————————————
之前,CSDN 中,有过 http://bbs.csdn.net/topics/270077624
但是,真正万能的方法 原理是:动态编译——效率为永久 200-300毫秒;
——————————————————————————————————————————————
我之所以提这个问题,就是因为:
现在的算法 采用的是 模拟人的思维,进行运算优先级,括号优先级——核心是 递归。
但是如果可以使用 前缀表达式,那么算法就可以不使用 递归——而是从前往后拆解 执行。
——效率可能从 2毫秒,提升至 忽略不记的程度。
——————————————————————————————————————————————
大神 caozhy 的分析如此透彻,最终我这边得到的结论是: 将算法 改编为 前缀表达式 是可行的!!