char * 与char [] 的区别(附leetcode.76代码)

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;
	
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值