https://blog.csdn.net/edward_zcl/article/details/89451078
char *指向的内容不能修改的问题:
https://www.cnblogs.com/yylqinghao/archive/2010/04/27/1721752.html
当char s = “hello”;后,不能使用s[0]=‘a’;语句进行赋值。这是将提示内存不能为"written"。
当用char s[]=“hello”;后,完全可以使用s[0]=‘a’;进行赋值,这是常规的数组操作。
#include<stdio.h>
#include<string.h>
#define Max 125
char* minWindow(char* s, char* t){
int length_s = strlen(s),length_t = strlen(t);
int left = 0,right = 0;
int i,minlen = 10000,minleft = 0;
int hash[Max];
for(i=0; i<Max; i++) hash[i] = -999;
for(i=0; i<length_t; i++) hash[t[i]] = 0;
for(i =0; i<length_t; i++) hash[t[i]]++;
while(right < length_s){
if(hash[s[right]]-- >0) length_t--;
right++;
while(length_t == 0){
if(right - left <minlen){
minleft = left;
minlen = right -left;
}
hash[s[left]]++;
if(hash[s[left]] >0) length_t++;
left++;
}
}
if(minlen == 10000)
return "";
s[minleft+minlen] = 0;
return s+minleft;
}
int main(){
char s[] = "ADOBECODEBANC";
char t[] = "ABC";
char * res = minWindow(s,t);
printf("%s",res);
return 0;
}