字符串或向量交集算法
有没有一个高效率的算法,可以求有序字符串或向量之间的交集。
例如(逗号隔开的数据,每个数据长度可能不一):
有序数据一:A,B,C,D,E,F
有序数据二:BC,B,C,D,E,F
有序数据三:A,B,DE,D,E,F
要得到交集是,x,x,x,D,E,F
目前的解决方式是:
1、split每个数据成数组
2、equals每个数组中相同位置的数据,得到是否一致
可以转换成集合或其他数据结构
求解更快的?
补充一下:
其实就是相当于数组
String[] s1={a,b,c}
String[] s2={c,b,c}
String[] s3={c,a,c}
需要算出三个数组的交集是{x,x,c},只有最后一个c是相同的
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(10)
建议看一下这链接:http://hi.baidu.com/gropefor/item/ce4e4320e69d94152b0f1cbc 百度空间:求交集与并集的线性算法!
你说的就是equals的方式吧
既然是对位,按长度排序,前两组挨个比,如果有对上的,生成有位置标记的数据x,x与第三组对照,如果有对上的,生成新x,如此循环到底
contains 不对的,是有顺序的,需要对位比较
回复
什么是交集?为什么要对位?
回复
嗯,这个要求是这样,相当于数组
选少数据的一个串,split出来,然后contains其他串。
俺放假了。耶!
回复
愕,我也要
@红薯 除了equals有好的方式吗