题目描述
在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写)
分析:
完整代码:
class Solution {
public:
int FirstNotRepeatingChar(string str) {
//声明一个变量,表示字符串的长度
int length = str.length();
//检查输入的合法性
if(length == 0)
return -1;
//声明一个变量,表示字符串的长度
const int tableSize = 256;
//声明一个数组,用来存储字母出现的次数
int hashTable[tableSize];
//初始化数组
for(int i = 0; i < tableSize; ++i)
hashTable[i] = 0;
//声明一个变量,指示字母位置的游标
int position = 0;
//遍历整个字符串
while(str[position] != '\0')
hashTable[str[position++]]++;
//再次将数组的游标移到 0 的位置
position = 0;
//再次遍历字符串
while(str[position] != '\0')
{
//判断是否出现字母出现次数为 1的
if(hashTable[str[position]] == 1)
return position;
//指向向后移
++position;
}
//没有找到
return -1;
}
};