天芯蓝影
发表于 2011-12-9 10:02:55
学习一下,看看呗
lintur
发表于 2011-12-9 11:04:31
学习了,是什么东东
seniors
发表于 2011-12-9 15:25:55
来学习,C的那个看懂了,指针+递归感觉比较简单清晰
Duvet
发表于 2011-12-9 18:11:55
回复 13# Duvet
發現是自己看錯了,確實是返回True,問了個蠢問題真抱歉
happytc
发表于 2011-12-9 18:35:31
回复Duvet
發現是自己看錯了,確實是返回True,問了個蠢問題真抱歉
Duvet 发表于 2011-12-9 18:11 http://www.autoitx.com/images/common/back.gif
呵,本来想用au3写个递归解决这个问题的
后来想了想,还是用C写出来代码简洁明了很多
Duvet
发表于 2011-12-9 18:39:48
本帖最后由 Duvet 于 2011-12-9 18:41 编辑
回复 20# happytc
確實差很多,悠久的語言能廣乏流傳至今,是有存在的價值啊!
Main()
Exit
Func IsCombined($a, $b, $c)
If (Stringlen($a) + Stringlen($b)) <> StringLen($c) Then Return SetError(0, 0, False)
If StringLen($c) = 0 Then Return SetError(0, 0, True)
If $a == "" Then Return SetError(0, 0, $b == $c)
If $b == "" Then Return SetError(0, 0, $a == $c)
If StringLeft($a, 1) == StringLeft($c, 1) Then
If IsCombined(StringTrimLeft($a, 1), $b, StringTrimLeft($c, 1)) Then Return SetError(0, 0, True)
EndIf
If StringLeft($b, 1) == StringLeft($c, 1) Then
If IsCombined($a, StringTrimLeft($b, 1), StringTrimLeft($c, 1)) Then Return SetError(0, 0, True)
EndIf
Return SetError(0, 0, False)
EndFunc
Func Main()
Local $x = "black"
Local $y = "board"
Local $z1 = "blackboard"
Local $z2 = "boblaarcdk"
Local $z3 = "boabdrlack"
MsgBox(0, 0, IsCombined($x, $y, $z1) & @CRLF & IsCombined($x, $y, $z2) & @CRLF & IsCombined($x, $y, $z3));
EndFunc
visualc
发表于 2011-12-9 18:56:40
想不出來,還是看看大俠的
happytc
发表于 2011-12-10 14:59:42
回复happytc
確實差很多,悠久的語言能廣乏流傳至今,是有存在的價值啊!
Duvet 发表于 2011-12-9 18:39 http://www.autoitx.com/images/common/back.gif
嗯,多谢了,我还说等我有心情有空了,把它翻成au3的呢。
penguinl
发表于 2011-12-11 16:18:59
看下高人的解答!
Ycxw2008
发表于 2011-12-12 22:54:14
好像关于字符串的的帖子都能见到afan版主,
总是能学到东西
{:face (332):}
lindafu
发表于 2011-12-14 09:37:21
来学习下了
kyniel
发表于 2011-12-14 10:24:09
看答案 学习
shenrenba
发表于 2011-12-14 10:35:54
看看我能想到的很麻烦
kyniel
发表于 2011-12-14 10:36:10
回复 4# 3mile
如果$str3="blboardcka" ,你的程序还对吗?
3mile
发表于 2011-12-14 11:38:14
回复 29# kyniel
Local $str1="black",$str2="board"
Local $str3="blboardcka";"blackboard"
;~ Local $str3="blboardcka"
;~
$time=TimerInit()
$a=Compare($str1,$str2,$str3)
MsgBox(0,TimerDiff($time),$a)
Func Compare($s1,$s2,$s3)
$arr1=StringRegExpReplace($s1,'.','(.*?)\0')
$len1=@Extended
$arr2=StringRegExpReplace($s2,'.','(.*?)\0')
$len2=@Extended
If StringRegExp($s3,$arr1,0) Then;And StringRegExp($s3,$arr2,0) Then
$flag=True
Local $temp=""
For $i=1 To $len1
$temp&='$'&$i
Next
$s3=StringRegExpReplace($s3,$arr1,$temp)
If Not StringRegExp($s3,$arr2,0) Then $flag=False
Else
$flag=False
EndIf
Return $flag
EndFunc