題目描述:
給定字串 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 ...