在一个字符串中找到第一个只出现一次的字符

在一个字符串中找到第一个只出现一次的字符。如输入 abaccdeff,则输出 b。

题目不难,主要是两个条件,注意只出现一次,并且要第一个这种字符。

用stl的map什么的有点不合适,简单数组map即可。

char str_first(char* str)
{
	char* ptr = str;
	int map[255];
	memset(map, 0, sizeof(int)*255);
	// First O(N), count
	while(*ptr!='
char str_first(char* str)
{
	char* ptr = str;
	int map[255];
	memset(map, 0, sizeof(int)*255);
	// First O(N), count
	while(*ptr!='\0')
	{
		map[*ptr]++;
		ptr++;
	}
	// Second O(N), find first and only one time
	ptr = str;
	while(*ptr!='\0')
	{
		if(map[*ptr]==1)
		{
			return *ptr;
		}
		ptr++;
	}
	return '\0';
}
') { map[*ptr]++; ptr++; } // Second O(N), find first and only one time ptr = str; while(*ptr!='
char str_first(char* str)
{
	char* ptr = str;
	int map[255];
	memset(map, 0, sizeof(int)*255);
	// First O(N), count
	while(*ptr!='\0')
	{
		map[*ptr]++;
		ptr++;
	}
	// Second O(N), find first and only one time
	ptr = str;
	while(*ptr!='\0')
	{
		if(map[*ptr]==1)
		{
			return *ptr;
		}
		ptr++;
	}
	return '\0';
}
') { if(map[*ptr]==1) { return *ptr; } ptr++; } return '
char str_first(char* str)
{
	char* ptr = str;
	int map[255];
	memset(map, 0, sizeof(int)*255);
	// First O(N), count
	while(*ptr!='\0')
	{
		map[*ptr]++;
		ptr++;
	}
	// Second O(N), find first and only one time
	ptr = str;
	while(*ptr!='\0')
	{
		if(map[*ptr]==1)
		{
			return *ptr;
		}
		ptr++;
	}
	return '\0';
}
'; }

Leave a Reply

Your email address will not be published.