392 判斷子串行

2021-10-08 13:33:33 字數 1044 閱讀 3814

題目描述:

給定字串 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,稱作s1, s2, … , sk 其中 k >= 10億,你需要依次檢查它們是否為 t 的子串行。在這種情況下,你會怎樣改變**?

方法1:

主要思路:

(1)直觀的想,就是要在字串 t 中,順序找到字串 s 中的所有字元即可;

(2)為了保證有序的找出字串 s 中的字元,在 t 中每次找字元時,需要從上乙個找到字元的位置接著向下找;

class solution}if

(j==t.

size()

) start=j+1;

//更新字串 t 中找 s 的下乙個字元時的起始位置

}return

true;}

};

方法2:雙指標

主要思路

(1)起始本質上和上述方法是乙個思路,但表述更加清晰簡練;

class solution

++j;

}return i==s.

size()

?true

:false;}

};

392 判斷子串行

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

392 判斷子串行

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

392 判斷子串行

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