3mile 发表于 2010-8-6 23:19:45

回复 15# 水木子
字符串长度一定要相同吗?
头很晕,别理我。#include <array.au3>
Local $z=1
$a="abc123"
$b="2acb31"
$a_array=StringSplit($a,"")
_ArrayDelete($a_array,0)
$b_array=StringSplit($b,"")
_ArrayDelete($a_array,0)
For $i=0 To UBound($b_array)-1
        $fin=_ArrayFindAll($a_Array,$b_array[$i])
        If UBound($fin)>0 Then $z+=1
Next
If StringLen($b)=$z And StringLen($a)=StringLen($b) Then
        MsgBox(0,0,"相似")
Else
        MsgBox(0,0,"不相似")
EndIf

水木子 发表于 2010-8-6 23:23:18

回复 16# 3mile
不错哦!判断正确,先去休息会儿吧!

afan 发表于 2010-8-6 23:25:50

我比较愚钝,硬是没看懂楼主的意思…

3mile 发表于 2010-8-6 23:29:48

回复 17# 水木子
酒喝多了!幸好是水木兄,不介意小弟这么张狂。海涵,海涵。

水木子 发表于 2010-8-6 23:34:44

回复 18# afan

前辈来啦!就是在等你呢!

想看看前辈奇妙的思路。

大绯狼 发表于 2010-8-7 00:04:53

本帖最后由 大绯狼 于 2010-8-7 00:12 编辑

Dim $a = "123456789abcdefg"
Dim $b = "abcdefg123456789"
$xora = 0
$plusa = 0
$xorb = 0
$plusb = 0
$flag = False
If StringLen($a) = StringLen($b) Then
        For $i = 1 To StringLen($a)
                $xora = BitXOR(Asc(StringMid($a, $i, 1)), $xora)
                $xorb = BitXOR(Asc(StringMid($b, $i, 1)), $xorb)
                $plusa += Asc(StringMid($a, $i, 1))
                $plusb += Asc(StringMid($b, $i, 1))
        Next
        If $xora = $xorb And $plusa = $plusb Then
                $flag = True
        EndIf
EndIf
MsgBox(0, 0, $flag)这是我今年最神奇的代码。。。。。。。我都不知道我是怎么想的。。。。。。。。。。。

minterz 发表于 2010-8-7 00:14:28

没看懂这个...

大绯狼 发表于 2010-8-7 00:26:02

Dim $a = "123456789abcdefg"
Dim $b = "abcdefg123456789"
$flag = False
If StringLen($a) = StringLen($b) Then
        For $i = 1 To StringLen($a)
                $b=StringReplace($b,StringMid($a, $i, 1), "",1,1)
        Next
        If $b = "" Then
                $flag = True
        EndIf
EndIf
MsgBox(0, 0, $flag)我觉得这个更靠谱。。。。。。。。。。

afan 发表于 2010-8-7 00:27:54

我觉得这个更靠谱。。。。。。。。。。
大绯狼 发表于 2010-8-7 00:26 http://www.autoitx.com/images/common/back.gif


    想到一块了…

大绯狼 发表于 2010-8-7 00:28:57

回复 24# afan


   这应该是最普通的办法把。。。。汗

afan 发表于 2010-8-7 00:29:39

回复 25# 大绯狼


    所以我没敢贴出来 ^ ^

C.L 发表于 2010-8-7 02:23:26


Dim $a = "123456789abcdefg"
Dim $b = "abcdefg123456789"
$a = StringRegExpReplace(StringTrimLeft(StringToBinary($a),2),"(\S{1})(\S{1})","+$1+$2")
$b = StringRegExpReplace(StringTrimLeft(StringToBinary($b),2),"(\S{1})(\S{1})","+$1+$2")
MsgBox (0,"",Execute($a)=Execute($b))

afan 发表于 2010-8-7 10:42:56


C.L 发表于 2010-8-7 02:23 http://www.autoitx.com/images/common/back.gif


    转2进制再求值,高~!

3mile 发表于 2010-8-7 11:53:55

回复 27# C.L
果然厉害,佩服

afan 发表于 2010-8-7 13:36:09

回复 27# C.L


    只是如果含双字节字符此法就不行了
页: 1 [2] 3
查看完整版本: 判断无序字符是否相等(已解决)