#字符串通配符
"""
题目描述
问题描述:在计算机中,通配符一种特殊语法,广泛应用于文件搜索、数据库、正则表达式等领域。
现要求各位实现字符串通配符的算法。
要求:
实现如下2个通配符:
*:匹配0个或以上的字符(字符由英文字母和数字0-9组成,不区分大小写。下同)
?:匹配1个字符
输入:
通配符表达式;
一组字符串。
输出:
返回匹配的结果,正确输出true,错误输出false
本题含有多组样例输入!
输入描述:
先输入一个带有通配符的字符串,再输入一个需要匹配的字符串
输出描述:
返回匹配的结果,正确输出true,错误输出false
"""
"""
te?t*.*
txt12.xls
"""
while True:
try:
s1 = input()
s2 = input()
i = 0
j = 0
k = 'true'
#从第一个字符进行比较
while i < len(s1) - 1 and j < len(s2) - 1:
#如果对应的字符一样或者s1中的字符为?,继续比较下一个
if s1[i] == s2[j] or s1[i] == '?':
i += 1
j += 1
elif s1[i] == '*':
#如果下一个字符一样,可以不用管s2的第j个字符,继续比较下去
if s1[i + 1] == s2[j + 1]:
i += 1
j += 1
#如果下一个字符不一样,那么s1的*匹配s2的多个字符
else:
j += 1
#如果上面两种情况都不满足,在匹配失败,退出循环
else:
k = 'false'
break
#如果匹配完成后,k的值仍为true,则匹配成功
print(k)
except:
break
#日期转换为天数
"""题目描述
根据输入的日期,计算是这一年的第几天。。
测试用例有多组,注意循环输入
输入描述:
输入多行,每行空格分割,分别是年,月,日
输出描述:
成功:返回outDay输出计算后的第几天;失败:返回-1
"""
#2020 12 12
while True:
try:
y,m,d=map(int,input().split())
month=[31,28,31,30,31,30,31,31,30,31,30,31]
#计算天数
days = sum(month[:(m-1)])+d
#平年的二月有28年,闰年的二月的29天,能被4整除或者400整除的年份,二月是闰年,反之,是平年
if m>2 and (y%4==0 and y%100!=0 or y%400==0):
days +=1
print(days)
except:
break
#查找最长公共子字符串
"""
题目描述
查找两个字符串a,b中的最长公共子串。若有多个,输出在较短串中最先出现的那个。
注:子串的定义:将一个字符串删去前缀和后缀(也可以不删)形成的字符串。请和“子序列”的概念分开!
本题含有多组输入数据!
输入描述:
输入两个字符串
输出描述:
返回重复出现的字符
"""
while True:
try:
str1=input()
str2=input()
n = 0
s = ''
#找到长度较小的字符串,放在str1处
if len(str1)>len(str2):
str1,str2 = str2, str1
for i in range(len(str1)+1):
if str1[i-n:i] in str2: #abcdefghijklmnop
s = str1[i-n:i] #abcsafjklmnopqrstuvw
n +=1
print(s)
print("="*30)
print(s,len(s))
except:
break
#abcdefghijklmnop
#abcsafjklmnopqrstuvw
# while True:
# try:
# s1 = input()
# s2 = input()
# if len(s1) > len(s2):
# s1, s2 = s2, s1
# m, n = len(s1), len(s2)
# dp = [[0] * (n+1) for _ in range(m+1)]
# index, max_len = 0, 0
# for i in range(1, m+1):
# for j in range(1, n+1):
# if s1[i-1] == s2[j-1]:
# dp[i][j] = dp[i-1][j-1] + 1
# if dp[i][j] > max_len:
# max_len = dp[i][j]
# index = i
# else:
# dp[i][j] = 0
# print(s1[index-max_len:index])
# except:
# break