lintcode訓練筆記 題目 字串查詢

2021-10-07 15:35:50 字數 1457 閱讀 3894

題目:

對於乙個給定的 source 字串和乙個 target 字串,你應該在 source 字串中找出 target 字串出現的第乙個位置(從0開始)。如果不存在,則返回 -1。樣例樣例 1:輸入: source = 「source」 , target = 「target」

輸出:-1

樣例解釋: 如果source裡沒有包含target的內容,返回-1

樣例 2:輸入: source = 「abcdabcdefg」 ,target = 「bcd」

輸出: 1

樣例解釋: 如果source裡包含target的內容,返回target在source裡第一次出現的位置

挑戰o(n2)的演算法是可以接受的。如果你能用o(n)的演算法做出來那更加好。

正確解法:

def strstr(self, source, target):

if source is none or target is none:

return -1

ls, lt = len(source), len(target)

for i in range(ls - lt + 1):

print(i)

j = 0

while j < lt and source[i+j] == target[j]:

j += 1

if j == lt:

return i

return -1

錯誤解法:

def strstr(self, source, target):

if (len(source)==0 and len(target)==0) or (len(target)==0):

return 0

if len(source)==0:

return -1

if len(target)>len(source):

return -1

i=0j=0

while i =len(source):

return -1

else:

continue

else:

i=i+1

j=j+1

print("3:",i,j)

if j>=len(source) and i=len(target):

res=j-i

return res

錯誤解法,若source=「sourced」,target="orc"輸出為2.列印日誌為:

2: 0 1

3: 1 2

2: 1 3

3: 2 4

3: 3 5

以上解法思路可用於判斷字串target中的所有字元是否存在於source中。

python 裡的none相當於乙個空物件,type(none)為而 「」 就是乙個空字串,判斷時結果都是false

週中訓練筆記

rand 函式 rand n 範圍 0 n 1 n rand m n 1 範圍n m 線段樹的概括 1.是乙個完全二叉樹 2.主要用於解決解決連續區間的動態查詢問題 現在對於線段樹的認識還很侷限,所以概括的也非常籠統,接下來的幾天會繼續研究線段樹的。然後就是今天的廣西邀請賽重現賽的題 今天因為下午有...

週末訓練筆記(三)

感覺這兩天受到了一萬點的傷害,也越發的感覺到了自己的不足,這兩天的比賽就ac了一道題,還有一道題感覺思路是對的,但是不知道為什麼過不了。1.輸入維多利亞和她丈夫的屬相,然後判斷他們的年齡差幾歲。解題思路 把12個屬相存到乙個陣列中然後根據不同的情況有正反兩種迴圈,迴圈到和他們屬相相同的元素的下標存起...

週中訓練筆記(四)

線段樹總結 線段樹儲存的是區間的資訊然後在可以進行區間的各種操作。對於節點a n 它的左兒子為a 2 n 右兒子為a 2 n 1 假如這個節點所表示的區間為 1,5 那麼它左兒子表示的區間為 1,3 右兒子表示的區間為 4,5 公式為mid l r 2,左兒子表示的區間為 l,mid 右兒子表示的區...