struct str_info
{
unsigned int idx;
unsigned int cnt;
unsigned char val;
str_info()
{
idx = 0;
cnt = 0;
}
};
int FirstNotRepeatingChar(string str) {
int len = str.length();
if(len < 0 || len > 10000)
return 0;
char *p = &str[0];
int id = 0;
str_info str_myInfo[0x80];
while(*p != '\0')
{
str_myInfo[*p].idx = id++;
str_myInfo[*p].cnt++;
str_myInfo[*p].val = *p;
p++;
}
char *pStr = &str[0];
while((*pStr) != '\0')
{
if(str_myInfo[*pStr].cnt == 1)
{
return str_myInfo[*pStr].idx;
}
pStr++;
}
return 0;
}
主要是将字符本身作为一个数组的下标,以此来记录其出现的次数和在整个字符串中的位置。