天芯蓝影 发表于 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


页: 1 [2] 3
查看完整版本: 再给个简单点的问题:判断S3是否由S1和S2中的字符按原顺序组成