求算法,或思路【听说没几个人做得出来】
很几条这样的数据:
1、A+B+C-D+
2、A+B-C+D-
3、C+A-B+E+
4、A+B+C-D-
....
以上字母是无序。
需要快速查找这样形式的数据,
包含有
A+C-
结果就是:1
或
(A+|B+)&C-拆分出来就是需要找到:A+C-或B+C-,只要满意两者之一就找出来,
结果是:
1、A+B+C-D+
4、A+B+C-D-
求算法,或思路,最好考虑一下性能。。。。
------解决方案--------------------(A+
------解决方案--------------------B+)&C-这种需要自己解析么?
其他indexOf或者contains不就可以解决了么。。
------解决方案--------------------(A+
------解决方案--------------------B+)&C- 这种表达式写个方法来拆分, 返回符合条件的A+,C-和B+,C- (List<List<String>>)
然后contains来判断.
这我想到的,没考虑效率方面..
------解决方案--------------------个人想法是一个二维数组,你不需要存储abcd,只需要存储+ -就行了。然后遍历数组,查询对应位置是不是+或-.
这应该是最简单的实现了。
------解决方案--------------------标准的产生式问题, 去看下javacc或antlr。任意一个,你这个问题十分钟就搞定了。
------解决方案--------------------无序的,用语法分析器,比较好。
排序后在查找的,可以考虑多模匹配,AC算法。
------解决方案--------------------1、用javacc
2、用解释器模式自己写一个解释器