我一直在做更多的CodeEval
挑战,并在hard选项卡上遇到了一个。搜索给定键的字符串
给你两个字符串。确定第二个字符串是否是第一个字符串的子字符串(不要使用任何substr类型库函数)。第二个字符串可能包含星号(),应将其作为正则表达式处理,即匹配零个或多个字符。星号可以被\ char字符转义,在这种情况下,它应该被解释为一个普通的''字符。总结一下:字符串可以包含字母,数字,*和\字符。
所以你给出的文件中的两个字符串是这个样子:Hello,ell
你的任务是要弄清楚,如果ell
是hello
,我做什么:
我还没有完全得到它完美,但我确实达到了这个目标,并且完成了65%的工作。它如何贯穿字符串和密钥,并检查字符是否匹配。如果字符匹配,它会将该字符附加到列表中。在此之后,它将字符串的长度除以2,并检查列表的长度是否大于或等于字符串的一半。我认为一半的字符串长度足以验证它是否确实匹配。它是如何工作的例子:
h == e -> no
e == e -> yes -> list
l == e -> no
l == e -> no
...
我的问题是我能做些什么更好的点,我可以验证上述通配符?
import sys
def search_string(string, key):
""" Search a string for a specified key.
If the key exists out put "true" if it doesn't output "false"
>>> search_string("test", "est")
true
>>> search_string("testing", "rawr")
false"""
results = []
for c in string:
for ch in key:
if c == ch:
results.append(c)
if len(string)/2 < len(results) or len(string)/2 == len(results):
return "true"
else:
return "false"
if __name__ == '__main__':
with open(sys.argv[1]) as data:
for line in data.readlines():
data_list = line.rstrip().split(",")
search_key = data_list[1]
word = data_list[0]
print(search_string(word, search_key))
我可以使用'.split()'函数吗? –
's ='string' print'st'in s ' –
@johnsmith如果您看过描述,那不会奏效。 – papasmurf