貪心演算法 貪心策略 判斷子串行

2021-10-03 11:14:18 字數 1117 閱讀 4728

題目描述為:

給定字串 s 和 t ,判斷 s 是否為 t 的子串行。

你可以認為 s 和 t 中僅包含英文小寫字母。字串 t 可能會很長(長度 ~= 500,000),而 s 是個短字串(長度 <=100)。

字串的乙個子串行是原始字串刪除一些(也可以不刪除)字元而不改變剩餘字元相對位置形成的新字串。(例如,"ace"是"abcde"的乙個子串行,而"aec"不是)。

示例 1:

s = "abc", t = "ahbgdc"

返回 true.

示例 2:

s = "axc", t = "ahbgdc"

返回 false.

貪心策略:你可以把s看成是乙個孩子,t看成是母親,這道題就成了孩子找母親。既然是找母親就要進行血緣核對,所以要將s中的元素都在t中找出來,當然如果有乙個元素在t中找不出來,就證明s不是t的孩子。

實現**(python3):

def

get_res

(p, c)

: index =

0for s in c:

index = p.find(s, index)

if index ==-1

:return

false

index +=

1return

true

defmain()

: parents_str =

input

('請輸入母串:'

) child_str =

input

('請輸入子串:')if

not get_res(parents_str, child_str)

:print

(child_str,

'不是'

, parents_str,

'的子串'

)else

:print

(child_str,

'是', parents_str,

'的子串'

)if __name__ ==

'__main__'

: main(

)

經典貪心演算法 貪心演算法概述

貪心演算法具有最優子問題結構,它的特點是 短視 每次選擇對當前局面最有利的決策,來一步步獲得最優解。我個人認為,貪心不是乙個具體的方法,而是一類方法,貪心演算法的關鍵不在於想到,而在於正確性的證明。要證明乙個貪心演算法是正確的,需要證明我們可以把乙個最優解逐步轉化為我們用貪心演算法所得到的解,而解不...

貪心演算法之 最長上公升子串行

題目描述 給定乙個整型陣列,求這個陣列的最長嚴格遞增子串行的長度。譬如序列1 2 2 4 3 的最長嚴格遞增子串行為1,2,4或1,2,3.他們的長度為3。輸入 輸入可能包含多個測試案例。對於每個測試案例,輸入的第一行為乙個整數n 1 n 100000 代表將要輸入的序列長度 輸入的第二行包括n個整...

LeetCode 擺動序列 貪心演算法

如果連續數字之間的差嚴格地在正數和負數之間交替,則數字序列稱為擺動序列。第乙個差 如果存在的話 可能是正數或負數。少於兩個元素的序列也是擺動序列。例如,1,7,4,9,2,5 是乙個擺動序列,因為差值 6,3,5,7,3 是正負交替出現的。相反,1,4,7,2,5 和 1,7,4,5,5 不是擺動序...