392 判斷子串行

2022-10-09 19:30:19 字數 870 閱讀 6758

這道題一眼暴力,單指標遍歷就可以解決,沒什麼好說的

class solution 

}//如果單指標指向了s的最後一位,則說明s在t中完全匹配上了

return index == s.size() ? true : false;

}};

題目是s是否為t的子串行,那麼可以轉換一下成求最大公共子串行的問題,如果最大公共子串行的長度等於s的長度,則說明s就是t的子串行

子串行的題一般都這樣子定義dp陣列:dp[i][j]表示在s[0, i - 1]t[0, j - 1]上最長的子串行長度(注意這裡是範圍裡的最長子序列長度!)

為什麼要這樣子定義呢,因為這樣子更方便針對空子陣列做操作,比如dp[0][0]根據意義是nums1[-1],nums2[-1],而這本是無意義的,這裡就把這個看作空的子陣列

判斷單個字元是有兩種可能

s[i - 1] == t[j - 1]

s[i - 1] != t[j - 1]

沒有什麼特殊的宣告,則都預設是沒有公共子串行,即長度為0

從小推大,故正序

class solution  else }}

//如果最大子串行長度正好是s的長度,則說明s是t的子串行

return dp[s.size()][t.size()] == s.size();

}};

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 ...