Leetcode判斷子串行python3

2021-10-08 12:53:56 字數 1873 閱讀 3439

題目描述:

這道題有多種不同解法。

1.生成迭代器方法——**最少,最直接

這種方法會用到iter()和all()兩個函式。

iter()函式可以針對列表、字串、元組等可迭代物件生成迭代器,然後對迭代器中的內容逐個處理;all()函式用來判斷給定的可迭代引數中的所有元素是否都為true,是返回true,不是返回false。

最簡潔的**如下:

class

solution

:def

issubsequence

(self, s:

str, t:

str)

->

bool

:

t=iter

(t)return

all(i in t for i in s)

針對該**的解釋為:

class

solution

(object):

defissubsequence

(self, s, t)

:"""

:type s: str

:type t: str

:rtype: bool

"""t =

iter

(t) res =

for c in s:

if c in t:

else

:none)

res =

iter

(res)

return

all(res)

2.雙指標法——最好理解的方法

**:

class

solution

:def

issubsequence

(self, s:

str, t:

str)

->

bool

:

i=0

j=0while i<

len(s)

and j<

len(t)

:if s[i]

==t[j]

:

i+=1

j+=1else

:

j+=1return i==

len(s)

3.庫函式法

該方法會用到find()函式。find()用來檢測乙個字串中是否包含子字串str,如果包括則返回第乙個字元的索引值,不包括則返回-1。函式中可以指定對字串的搜尋範圍,具體語法格式為str.find(str, beg, end)。

**如下,注意loc的定義值要為-1:

class

solution

:def

issubsequence

(self, s:

str, t:

str)

->

bool

:

loc=-1

for i in s:

loc = t.find(i,loc+1)

#從找到的上乙個字元的後乙個位置開始查詢

if loc==-1

:return

false

return

true

leetcode 判斷子串行

給定字串 s 和 t 判斷 s 是否為 t 的子串行。你可以認為 s 和 t 中僅包含英文小寫字母。字串 t 可能會很長 長度 500,000 而 s 是個短字串 長度 100 字串的乙個子串行是原始字串刪除一些 也可以不刪除 字元而不改變剩餘字元相對位置形成的新字串。例如,ace 是 abcde ...

leetcode 判斷子串行

給定字串 s 和 t 判斷 s 是否為 t 的子串行。你可以認為 s 和 t 中僅包含英文小寫字母。字串 t 可能會很長 長度 500,000 而 s 是個短字串 長度 100 字串的乙個子串行是原始字串刪除一些 也可以不刪除 字元而不改變剩餘字元相對位置形成的新字串。例如,ace 是 abcde ...

Leetcode 判斷子串行

給定字串 s 和 t 判斷 s 是否為 t 的子串行。你可以認為 s 和 t 中僅包含英文小寫字母。字串 t 可能會很長 長度 500,000 而 s 是個短字串 長度 100 字串的乙個子串行是原始字串刪除一些 也可以不刪除 字元而不改變剩餘字元相對位置形成的新字串。例如,ace 是 abcde ...