|
发表于 2019-11-2 23:12:52
|
显示全部楼层
本帖最后由 阴阳神万物主 于 2019-11-2 23:14 编辑
好的,我又来了检验代码了,就是行数略多……
- def solve(s1:str,s2:str,s3:str)->bool:
- if len(s3) != len(s1+s2):
- #print('调试',1,'长度不对')
- return False
- elif (s3 == s1+s2)or(s3==s2+s1):
- #print('调试',2,'算拼接')
- return True
- a=set(s1+s2)
- for i in a:
- if s1.count(i) + s2.count(i) != s3.count(i):
- #print('调试',3,'数儿不对')
- return False
- #s1,s2,s3 = list(s1),list(s2),list(s3)
- #print('调试',s1,s2,s3)
- while s1 or s2:
- a,b=True,True
- l1,l2 = len(s1),len(s2)
- for i in range(len(s3)):
- if a:
- if i == l1:
- a = False
- num = l1
- elif s1[i]!=s3[i]:
- a = False
- num = i
- if b:
- if i == l2:
- b = False
- num1 = l2
- elif s2[i]!=s3[i]:
- b = False
- num1 = i
- if not(a or b):
- break
- #print('调试',num,num1)
- if num > num1:
- flg = 1
- if s2:
- temp = s1.rfind(s2[0],0,num+1)
- if temp > 0:
- num = temp
- elif num < num1:
- flg = 2
- if s1:
- temp = s2.rfind(s1[0],0,num1+1)
- if temp > 0:
- num1 = temp
- else:
- if not num:#到末尾,或者顺序不对
- #print('调试',4,'到末尾,或者顺序不对')
- return (s3==s1+s2)or(s3==s2+s1)
- else:
- #print('调试',5,'犹豫')#,s1,s2,s3)
- flg = 1
- if flg == 1:
- #print('调试',s1[:num])
- s1=s1[num:]
- s3=s3[num:]
- elif flg == 2:
- #print('调试',s2[:num1])
- s2=s2[num1:]
- s3=s3[num1:]
- #print('调试','s1="%s",s2="%s",s3="%s"'%(s1,s2,s3))
- else:
- #print('调试',5,'循环结束,能走到这儿,大概率是对的')
- return True
- if __name__ == '__main__':
- print('示例1 T输出:',solve(s1 = "aabcc", s2 = "dbbca", s3 = "aadbbcbcac"))
- print('示例2 F输出:',solve(s1 = "", s2 = "", s3 = "1"))
- print('示例3 F输出:',solve(s1 = "aabcc", s2 = "dbbca", s3 = "aadbbbaccc"))
- print('之前错的T',solve(s1='aa',s2='a',s3='aaa'))
- print('之前错的T',solve(s1 = "abbcddef", s2 = "accbbbcd", s3 = "abbcddefaccbbbcd"))
- print('之前错的T',solve(s1 = "aba", s2 = "a", s3 = "aaba"))
- print('之前错的T',solve(s1 = "abcabc", s2 = "ac", s3 = "aabcabcc"))
- print('之前错的T',solve(s1 = "sdfjas;dfjoisdufzjkndfasdkfja;sdfa;dfa;dfaskdjhfasdhjdfakhdgfkajdfasdjfgajksdfgaksdhfasdkbfjkdsfbajksdfhakjsdfbajkdfbakdjsfgaksdhgfjkdsghfkdsfgadsjfgkajsdgfkjasdfh", s2 = "dfnakdjnfjkzghdufguweygfasjkdfgb2gf8asf7tgbgasjkdfgasodf7asdgfajksdfguayfgaogfsdkagfsdhfajksdvfbgkadsghfakdsfgasduyfgajsdkfgajkdghfaksdgfuyadgfasjkdvfjsdkvfakfgauyksgfajkefgjkdasgfdjksfgadjkghfajksdfgaskdjfgasjkdgfuyaegfasdjkfgajkdfygadjskfgjkadfg", s3 = "sdfjas;dfjoisdfnakdjnfjkzghdufguwdufzjkeygfasjkdfgb2gf8asf7ndtgbgasjkdfgasodf7asdfgfajkasdksdfguayfgaogfsdkagfsfjadhfajksdvfbgkadsghfa;sdkdsfgasduyfgajsdkfgafajkdghfaksdgfuyadgfas;dfjkdvfjsdkvfakfgauyksa;dgfajkefgjkdasgfdjksffaskdjhfasdhjdfakhdgadjkghfajgfkajdfksdfgaskdjfgasjkdgfuasdjfgajksdfgaksdhfasdkbfjkdsfbajksdfyaegfasdjkfgajkdfygadjskfgjkadfghakjsdfbajkdfbakdjsfgaksdhgfjkdsghfkdsfgadsjfgkajsdgfkjasdfh"))
复制代码
这回……要是再不对……我睡一觉起来再改。 |
评分
-
查看全部评分
|