1 查找字符串中第一个只出现一次的字符

/*
* 找出一个字符串中第一个只出现一次的字符。
思路:
 假设字符是ASCII字符,占一个字节,则最多为256个字符,用一个标记数组book[256]来记录每一个字符出现的次数,最后遍历这个标记数组,找到第一个元素值为1的数据的下标值,这个下标就是要找的字符。
*/
 

#include<stdio.h>

char firstOne(char* p);

int main()
{
/*
	int book[256] = {0};//用来标记每一个字符出现的次数,由于一个ASCII字符占一字节
	char c = '\0';//用来记录从输入读取的一个字符
	while(scanf("%c",&c)==1)//循环读取输入的字符串
	{
		int i = (int)c;
		book[i]++;
	}
	for(int i = 0;i<256;i++)
	{
		if(book[i]==1)
		{
			printf("%c",(char)i);
			break;
		}
	}
*/
	char* str = "abaccdeff";
	printf("%c",firstOne(str));
	return 0;
}


char firstOne(char* str)
{
	int book[256] = {0};//用来标记每一个字符出现的次数,由于一个ASCII字符占一字节
	while((*str)!='\0')//循环读取输入的字符串
	{
		int i = (int)(*str);//将字符强转为int下标
		book[i]++;//出现一次就递增一次
		str++;
	}
	//遍历数组中第一个值为1的下标值即就是第一个只出现一次的字符
	for(int i = 0;i<256;i++)
	{
		if(book[i]==1)
		{
			return (char)i;//强转回char字符
		}
	}
	return '\0';//没找到则返回'\0'
}
相关文章
相关标签/搜索