#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/* sliding window pattern
* while (r < size) {
* // check target condition
* while (target_condition) {
* // calculate minimum length
* // iterate left indicator
* }
* // iterate right indicator
* }
*/
static char *minWindow(char *s, char *t)
{
int i, j, count[256] = { 0 };
int slen = strlen(s);
int tlen = strlen(t);
/* edges of sliding window */
int l = 0, r = 0;
int min_len = slen + 1;
int start = 0;
int len = 0;
for (i = 0; i < tlen; i++) {
count[t[i]]++;
}
while (r < slen) {
if (--count[s[r++]] >= 0) {
/* pattern found */
len++;
}
while (len >= tlen) {
if (r - l < min_len) {
min_len = r - l;
start = l;
}
/* Chars with negative count are not included in the pattern string */
if (++count[s[l++]] > 0) {
len--;
}
}
}
char *result;
if (min_len <= slen) {
result = malloc(min_len + 1);
memcpy(result, s + start, min_len);
result[min_len] = '\0';
} else {
result = "";
}
return result;
}
int main(int argc, char **argv)
{
if (argc != 3) {
fprintf(stderr, "Usage: ./test string pattern\n");
exit(-1);
}
printf("Answer: %s\n", minWindow(argv[1], argv[2]));
return 0;
}
DdddJMs__135
- 粉丝: 3118
- 资源: 751
最新资源
- x64dbg-development-2022-09-07-14-52.zip
- 多彩吉安红色旅游网站-JAVA-基于springBoot多彩吉安红色旅游网站的设计与实现
- 本 repo 包含使用新 cv2 接口的 OpenCV-Python 库教程.zip
- 更新框架 (TUF) 的 Python 参考实现.zip
- Qos,GCC,pacing,Nack
- 章节1:Python入门视频
- 无需样板的 Python 类.zip
- ESP32 : 32-bit MCU & 2.4 GHz Wi-Fi & BT/BLE SoCs
- 博物馆文博资源库-JAVA-基于springBoot博物馆文博资源库系统设计与实现
- 旅游网站-JAVA-springboot+vue的桂林旅游网站系统设计与实现
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈