C语言实现( 查找给定串中第一个只出现一次的字符。)
算法思想:
1.在C语言中,char类型的本质是一个1个字节的整型 .我们不妨使用一个数组,用字符对应的ASCALL码值作为数组的下标。字符在给定串中出现的次数,做为数组对应下标的元素值。由于无符号char类型最大值为255,故一个长为255的数组足以记录给定串中任意字符出现的次数(只考虑英文字符)。
2.遍历该数组,其中值为1的元素,其下标值就是给定串中只出现一次的字符的ASCALL码值。也就是下标值对应的字符在给定串中只出现一次。
3.依次查询这些字符在给定串中的地址,得出其中的最低地址,即为串中第一个只出现一次的字符。
不啰嗦了!上代码。
//在一个串中,找到第一个不重复的字符,并返回#include
#include
#includechar getch( char *str)
{
intcount[255] = { 0 };
//定义一个长度为255的数组,以字符的ascall码作为数组下标,在对应下标处,记录给定串中,每个字符出现的次数。
int i = 0;
char *p = NULL, *tmp = NULL;
//如果给定串中第i个字符不为0, 就把该字符转化成对应的ascall码,作为count数组的对应下标,并另其元素值自增,,然后指针i在加1,继续在给定串下一个位置继续判断
for ( ;
str[i] ;
++count[ str[i++] ] );
for (i = 0;
i < 255;
++i)
{
//ascall码为i的字符出现的次数,在给定串中是1次
if (count[i] == 1)
{if ((tmp = strchr(str, i)) < p) //找到出现次数为1的字符的位置,与之前的出现次数为1的字符,比较在给定串的位置,p始终指向小的位置
{
p = tmp;
}else if(p == NULL)
{
p = strchr(str, i);
}} }
printf("%c\n", *p);
return *p;
}int main(void)
{
char str[] = "aabbcdMiifeklJHDFKHef";
char s1 = getch(str);
printf("%c ", s1);
system("pause");
return 1;
}
【C语言实现( 查找给定串中第一个只出现一次的字符。)】
推荐阅读
- 关于QueryWrapper|关于QueryWrapper,实现MybatisPlus多表关联查询方式
- MybatisPlus使用queryWrapper如何实现复杂查询
- python学习之|python学习之 实现QQ自动发送消息
- 【生信技能树】R语言练习题|【生信技能树】R语言练习题 - 中级
- 孩子不是实现父母欲望的工具——林哈夫
- 一起来学习C语言的字符串转换函数
- C语言字符函数中的isalnum()和iscntrl()你都知道吗
- opencv|opencv C++模板匹配的简单实现
- C语言浮点函数中的modf和fmod详解
- Node.js中readline模块实现终端输入