找回密码
 加入
搜索
楼主: lin0308

[AU3基础] 判断无序字符是否相等(已解决)

 火... [复制链接]
发表于 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

评分

参与人数 2金钱 +60 收起 理由
afan + 30 喝了酒还能写,厉害
水木子 + 30 辛苦啦!判断正确。

查看全部评分

发表于 2010-8-6 23:23:18 | 显示全部楼层
回复 16# 3mile
不错哦!判断正确,先去休息会儿吧!
发表于 2010-8-6 23:25:50 | 显示全部楼层
我比较愚钝,硬是没看懂楼主的意思…
发表于 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)
这是我今年最神奇的代码。。。。。。。我都不知道我是怎么想的。。。。。。。。。。。

评分

参与人数 1金钱 +50 收起 理由
afan + 50 的确很神奇

查看全部评分

发表于 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)
我觉得这个更靠谱。。。。。。。。。。
发表于 2010-8-7 00:27:54 | 显示全部楼层
我觉得这个更靠谱。。。。。。。。。。
大绯狼 发表于 2010-8-7 00:26



    想到一块了…
发表于 2010-8-7 00:28:57 | 显示全部楼层
回复 24# afan


   这应该是最普通的办法把。。。。汗
发表于 2010-8-7 00:29:39 | 显示全部楼层
回复 25# 大绯狼


    所以我没敢贴出来 ^ ^
发表于 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))

评分

参与人数 5金钱 +160 贡献 +3 收起 理由
pusofalse + 30 学习了
lin0308 + 20 + 3
3mile + 30 数学解决。厉害
afan + 50 学习了
水木子 + 30 学习啦!

查看全部评分

发表于 2010-8-7 10:42:56 | 显示全部楼层
C.L 发表于 2010-8-7 02:23



    转2进制再求值,高~!
发表于 2010-8-7 11:53:55 | 显示全部楼层
回复 27# C.L
果然厉害,佩服
发表于 2010-8-7 13:36:09 | 显示全部楼层
回复 27# C.L


    只是如果含双字节字符此法就不行了
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-5-17 05:26 , Processed in 0.072954 second(s), 15 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表