回 帖 发 新 帖 刷新版面

主题:如何求取两组数据的异或

设共有三个文本框 ,一 个按钮。
一个文本框内容为空
两个文本框的内容分别为“01 02 03 04 05”
                      “01 03 04 05 06 07 08”
 按钮一按比较,
 文本框原先为空的现是显示没有交集的数“02 07 08”

请高手指点迷津!!!在此谢谢了。[em10]

回复列表 (共5个回复)

沙发

笨办法是用Instr函数一个个去比较,如果数据很多,可以先用两个字节型数组分别装入两个文本框的数据,再使用For循环来比较

板凳

先split,因为数据有序,所以在O(n)的复杂度就可以选得出来。

3 楼

建议楼主把题目改成“如何求取两组数据的异或”。
1、你的文本框里实际上是两组数据;
2、数据执行的不是比较,而是异或。

这样一来,问题就清晰了。
步骤:
1、把文本框的内容转换成数据组(如楼上2位所言);
2、异或求值,可以选用自编一层do……loop循环来处理(基本与楼上2位观点一致)。而应当还有一种标准处理(说是应当,因为,我说不出来到底是哪个)。

4 楼

第一感的方法:
    
    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 楼

哦,如果不是二位数上面的代码结果会不准确,修改下:

    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

我来回复

您尚未登录,请登录后再回复。点此登录或注册