我一直在做更多的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