数组中字符出现的次数问题

本文探讨了编程题目中关于数组中字符和数字出现次数的问题,包括找到第一个只出现一次的字符、找出两个只出现一次的数字以及计算排序数组中数字出现的次数。通过不同解题思路,如使用哈希映射、异或运算和二分查找,提供了解决这类问题的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在编程题中经常会遇到数字在数组中出现的次数这种问题,常见的问题有:第一次出现的数字,只出现一次的数字,一个数字出现几次,要注意数组的形式,是排序数组还是没有规律数组,考虑这几个方面,解题思路是不同的。

下面就剑指offer中遇到的问题,列举如下:

1、第一个只出现一次的字符

题目描述:在一个字符串(1<=字符串长度<=10000,全部由大写字母组成)中找到第一个只出现一次的字符,并返回它的位置

解题思路:如果能够按字符出现的顺序统计数字出现的次数,那么第一个次数等于1的字符位置就是要求结果,可以新开辟一个大小为256的数组当做hashmap(为什么是256,因为char是8bit 能有256种可能),来统计字符出现的次数。

函数方程如下 :输入一个字符串

int FirstNotRepeatingChar(string str) {
     if(str.length() <= 0) return -1;
         
        int hash[256] = {0};
        int i = 0;
        for(i; i < str.length(); i++)//统计每个字符出现的次数
        {
            hash[str[i]]++;          
        }
        i = 0;
        while(str[i] != '\0')
        {
            if(hash[str[i]] == 1){break;}//找出第一个出现一次的字母,并返回它的位置
            i++;
        }       
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值