leet code 从500ms 优化到6ms



#include <stdio.h>
#include <windows.h>
#include <string.h>
#include <stdbool.h>

int lengthOfLongestSubstring(char* s) {
	bool isChecked[256];
	
	int index_start = 0;
	int index_end = 0;
	int max_cnt = 0;
	int current_cnt = 0;
	memset(isChecked, false, 256);
	char target_end = s[index_end];

	while (target_end != '\0')
	{
		if (!isChecked[target_end])
		{
			isChecked[target_end] = true;
			current_cnt++;
			index_end++;
			target_end = s[index_end];
		}
		else
		{
			if (current_cnt > max_cnt)
			{
				max_cnt = current_cnt;
			}
			char target_start = s[index_start];
			while (target_start != target_end)
			{
				index_start++;
				isChecked[target_start] = false;
				current_cnt--;
				target_start = s[index_start];
			}
			index_start++;
			index_end++;
			target_end = s[index_end];
		}
	}			
	if (current_cnt > max_cnt)
	{
		max_cnt = current_cnt;
	}
	return max_cnt;
}


int main(void)
{
	char* p_str = "abbaaaaaabcdaabcdeaa";
	printf("hello,world\r\n");
	printf("%s,%d\r\n", p_str, lengthOfLongestSubstring(p_str));
	system("pause");
}
https://leetcode.com/submissions/detail/80152054/

 

转载于:https://my.oschina.net/mummy108/blog/776250

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值