LeetCode 第三题两数之和 C语言

 

emmmmm,我用的应该是滑动窗口吧

 

int lengthOfLongestSubstring(char* s)
{
	int max = 0 ;
	int num = 1;
	int i,j,k;
	char *STmp;
	char SSTmp[2] = {'\0','\0'};

	if (*s == '\0')
	{
		return 0;	//如果是空字符串就返回0
	}

	if (sizeof (s) == 3)
	{
		if (*s == *(s + 1))
		{
			return 2;	//如果是两个不相同字符就返回2
		}
	}

	for (i = 0; s[i] != '\0'; i++);	//统计字符串有多长

	STmp = (char *)malloc(i*sizeof(char));	//开辟与输入字串相同的空间

	for ( i = 0; s[i] != '\0'; i++)	//初始化刚开辟的空间,置为‘\0’
	{
		STmp[i] = '\0';
	}

	for (i = 0; s[i] != '\0'; i++)
	{
		num = 1;	//重置计数变量

		for (k = 0; STmp[k] != '\0'; k++)	//初始化开辟的空间,置为‘\0’
		{
			STmp[k] = '\0';	
		}

		for ( j = i; s[j + 1] != '\0'; j++)
		{

			STmp[j - i] = s[j];	//(j-i)是为了从数组第一位开始赋值

			SSTmp[0] = s[j + 1];	//下一个字符(SSTmp[0])

			if (!strstr((const char*)STmp,(const char*)SSTmp)) // 下一个字符(SSTmp[0])与当前录入到STmp的字串对比,无重复计数变量+1
			{
				num++;
			}
			else
			{


				max = max > num ? max : num;

				break;
			}
			max = max > num ? max : num;
		}
	}

	return (max > num) ? max : num;
}

 

有些地方确实比较蛋疼,比如我用了个变量来计数,而不是最后统计字符串长度。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值