Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Solution {
- public:
- string minWindow(string s, string t) {
- int slen = s.length(), tlen = t.length();
- vector<vector<int>> dp(tlen+1, vector(slen+1, 0));
- for(int i=0; i<=slen; i++)
- dp[0][i] = i+1;
- for(int i=1; i<=tlen; i++)
- for(int j=1; j<=slen; j++)
- dp[i][j] = (t[i-1] == s[j-1]) ? dp[i-1][j-1] : dp[i][j-1];
- /*
- For s="abcdebdde" t="bde"
- dp table will be...
- 1 2 3 4 5 6 7 8 9 10
- 0 0 2 2 2 2 6 6 6 6
- 0 0 0 0 2 2 2 6 6 6
- 0 0 0 0 0 2 2 2 2 6
- */
- int start = 0, len = slen+1;
- for(int j=1; j<=slen; j++){
- if(dp[tlen][j] != 0){
- if(j-dp[tlen][j]+1 < len){
- start = dp[tlen][j]-1;
- len = j-dp[tlen][j]+1;
- }
- }
- }
- return (len == slen+1) ? "" : s.substr(start, len);
- }
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement