描述:
给出三个队列 s1,s2,s3 ,判断 s3 是否是由 s1 和 s2 交叉得来。 如:s1 为 aabcc , s2 为 dbbca。 当 s3 为 aadbbcbcac 时,返回 true(即将 s1 拆成三部分: aa,bc,c 分别插入 s2 对应位置) 否则返回 false。
输入:
aabcc,dbbca,aadbbcbcac
输出:
true
输入样例:
aabcc,dbbca,aadbbcbcac aabcc,dbbca,aadbbbaccc a,b,ab a,b,ba a,b,ac abc,bca,bcaabc abc,bca,aabbcc
输出样例:
true false true true false true false
思路:
输入字符串以“,”分割并且分别赋值给三个字符串对象,然后从第一个字符串对象开始匹配第三个字符串,相应位置字符,没有则将第二个字符串字符进行形同匹配,并通过计数标志进行判断输出。
代码:
import sys
for line in sys.stdin:
# line = line.split(',')
# s1,s2,s3=list(line[0]),list(line[1]),list(line[2])
s1,s2,s3=line.strip().split(',') #strip()除去字符串头尾的指定字符
l1,l2,l3=len(s1),len(s2),len(s3)
print(s3)
h1=h2=h3=0
while h3<l3:
t3=s3[h3]
if h1<l1 and t3==s1[h1]:
h1+=1
if h2<l2 and t3==s2[h2]:
h2+=1
h3+=1
print(h1,h2,h3)
print(l1,l2,l3)
if h1 == l1 and h2 == l2 and h3 == l3 and l3 == (l1+l2):
print('true')
else:
print('false')