您的位置:首页 > Web前端

剑指offer——寻找字符串中只出现一次的第一个字符位置

2018-02-19 13:24 309 查看
题目:在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置

解:像这类题都可以归结为计算字符在字符串中的个数问题,高效的方法是使用哈希,将字符映射为数字(可以利用ASCII映射);具体步骤如下
A、开辟一个数组长度256,因为字符也就是8个位
B、循环字符串一次,就可以得到每个字符出现次数,那么如果才能知道那个只出现一次的字符是第一次出现?
C、再对字符串遍历一次,按顺序找,如果次数是1那就是满足题目要求的下标!

int FirstNotRepeatingChar(string str) {
int count_num[256] = { 0 };//用一个数组来存放每个字符出现的次数,ASCLL值
for (int i = 0; str[i]; i++){
count_num[str[i]]++;
}
for (int i = 0; str[i]; i++){//这里还要注意细节问题就是可能没有只出现一次的字符
if (count_num[str[i]] == 1)
return i;
}
return -1;//这个就是解决字符串为空以及没有只出现一次的字符!
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐