在编程题中经常会遇到数字在数组中出现的次数这种问题,常见的问题有:第一次出现的数字,只出现一次的数字,一个数字出现几次,要注意数组的形式,是排序数组还是没有规律数组,考虑这几个方面,解题思路是不同的。
下面就剑指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++;
}