這道題一眼暴力,單指標遍歷就可以解決,沒什麼好說的
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 ...