慚愧啊,今天寫了個查詢子串的python程式被bs了…
如果讓你寫乙個程式檢查字串s2中是不是包含有s1。也許你會很直觀的寫下下面的**:
#determine whether s1 is a substring of s2
def issubstring1(s1,s2):
tag = false
len1 = len(s1)
len2 = len(s2)
for i in range(0,len2):
if s2[i] == s1[0]:
for j in range(0,len1):
if s2[i]==s1[j]:
tag = true
return tag可是這是python,我們可以利用字串自帶的find()方法,於是可以這樣:
def issubstring2(s1,s2):
tag = false
if s2.find(s1) != -1:
tag = true
return tag悲情的事就在於此,原來python中的關鍵字"in」不僅可以用於列表、元祖等資料型別,還可以用於字串。所以,這裡只需要直接一行**搞定:
def issubstring3(s1,s2):
return s1 in s2後知後覺了,慚愧;-)
類似的,假設要在字串中,查詢多個子串是否存在,並列印出這些串和首次出現的位置:
def findsubstrings(substrings,deststring):
res = map(lambda x:str([deststring.index(x),x]),filter(lambda x:x in deststring,substrings))
if res:
return ', '.join(list(res))
;-) very cool~
update: 如果你不習慣最後面這種看起來很複雜的語法也沒關係,可以使用列表解析,更加簡潔:def
findsubstrings(substrings,deststring):
return',
'.join([str([deststring.index(x),x])
forx
insubstrings
ifx
indeststring])
Python字串中查詢子串小技巧
慚愧啊,今天寫了個查詢子串的python程式被bs了 如果讓你寫乙個程式設計客棧程式檢查字串s2中是不是包含有s1。也許你會很直觀的寫下下面的 複製 如下 d程式設計客棧etermine whether s1 is a substring of s2 def issubstring1 s1,s2 t...
python原始碼查詢子串
首先找到string.find定義的地方,在objects stringobject.c static pyobject string find pystringobject self,pyobject args py local inline py ssize t string find inte...
查詢最長回文子串 python
回文串正著讀和反著讀都一樣的字串,如xyx和xyyx 問題給定乙個字串s,找s中的最長回文子串 如s asdfxxyxxhjkl 其最長回文子串是 xxyxx 從中間開始向兩邊擴散 舉個栗子 如 s abcxyxsed 可以看到存在的最長回文子串是 xyx 遍歷字串s i 0,s i a 向兩邊擴,...