主题:如何求取两组数据的异或
alenschen
[专家分:0] 发布于 2008-03-04 00:56:00
设共有三个文本框 ,一 个按钮。
一个文本框内容为空
两个文本框的内容分别为“01 02 03 04 05”
“01 03 04 05 06 07 08”
按钮一按比较,
文本框原先为空的现是显示没有交集的数“02 07 08”
请高手指点迷津!!!在此谢谢了。[em10]
最后更新于:2008-03-04 11:55:00
回复列表 (共5个回复)
沙发
一江秋水 [专家分:9680] 发布于 2008-03-04 08:06:00
笨办法是用Instr函数一个个去比较,如果数据很多,可以先用两个字节型数组分别装入两个文本框的数据,再使用For循环来比较
板凳
merry05 [专家分:8920] 发布于 2008-03-04 09:12:00
先split,因为数据有序,所以在O(n)的复杂度就可以选得出来。
3 楼
老大徒伤悲 [专家分:29120] 发布于 2008-03-04 09:32:00
建议楼主把题目改成“如何求取两组数据的异或”。
1、你的文本框里实际上是两组数据;
2、数据执行的不是比较,而是异或。
这样一来,问题就清晰了。
步骤:
1、把文本框的内容转换成数据组(如楼上2位所言);
2、异或求值,可以选用自编一层do……loop循环来处理(基本与楼上2位观点一致)。而应当还有一种标准处理(说是应当,因为,我说不出来到底是哪个)。
4 楼
家人 [专家分:6760] 发布于 2008-03-04 15:25:00
第一感的方法:
dim tmp as string,s as string
dim arr() as string
dim i as long
tmp=text1 &" "& text2
arr=split(tmp," ")
for i=0 to ubound(arr)
if ubound(split(tmp,arr(i)))=1 then
s=s & arr(i) & " "
end if
next
text3=s
5 楼
家人 [专家分:6760] 发布于 2008-03-04 15:30:00
哦,如果不是二位数上面的代码结果会不准确,修改下:
dim tmp as string,s as string
dim arr() as string
dim i as long
tmp=text1 &" "& text2
arr=split(tmp," ")
tmp=" "& tmp &" "
for i=0 to ubound(arr)
if ubound(split(tmp," "& arr(i) &" "))=1 then
s=s & arr(i) & " "
end if
next
text3=s
我来回复