代刷网站搭建教程,产品质量推广营销语,中英文 wordpress,网站做下CDN防护给你一个字符串 s 、一个字符串 t 。返回 s 中涵盖 t 所有字符的最小子串。如果 s 中不存在涵盖 t 所有字符的子串#xff0c;则返回空字符串 。 注意#xff1a;
对于 t 中重复字符#xff0c;我们寻找的子字符串中该字符数量必须不少于 t 中该字符数量。如果…给你一个字符串 s 、一个字符串 t 。返回 s 中涵盖 t 所有字符的最小子串。如果 s 中不存在涵盖 t 所有字符的子串则返回空字符串 。 注意
对于 t 中重复字符我们寻找的子字符串中该字符数量必须不少于 t 中该字符数量。如果 s 中存在这样的子串我们保证它是唯一的答案。
思路一滑动窗口
char * minWindow(char * s, char * t){int hash[58] {0};int lenS strlen(s);int lenT strlen(t);int min 0, max INT_MAX; for (int i 0; i lenT; i) hash[t[i] - A];for (int j 0, i 0; j lenS; j) {if (hash[s[j] - A] 0) lenT--;hash[s[j] - A]--;while (lenT 0) { if (j - i 1 max - min 1) {max j;min i;}if (hash[s[i] - A] 0) lenT;i;}}if (max INT_MAX) return ;char* res malloc(sizeof(char) * (max - min 2));int i 0;while (min max) res[i] s[min];res[i] \0;return res;
}
时间复杂度O(n^2)空间复杂度O(n)
分析
首先建立哈希表将各个英文字母的数量存放到哈希表中根据s[i]的字符使哈希表相应位置减一不断判断是否为最小子串最后输出涵盖t的子串
总结
本题考察滑动窗口的应用将是否为最小子串的判断编写清楚即可解决