第一个只出现一次的字符
class Solution {
public:
int FirstNotRepeatingChar(string str) {
int *a=new int[51]();//初始化为0,那个字符出现1
int *b=new int[51]();//那个字符对应的下标
int num=100;
int temp=100;
if(str.size()==0)
return -1;
for(int i=0;i<str.size();i++)
{
if(str[i]<='Z'&&str[i]>='A')
{
if(a[str[i]-65]==1)
a[str[i]-65]=2;
if(a[str[i]-65]==0)
{
a[str[i]-65]=1;//出现一次
b[str[i]-65]=i;
}
}
if(str[i]<='z'&&str[i]>='a')
{
if(a[str[i]-71]==1)
a[str[i]-71]=2;
if(a[str[i]-71]==0)
{
a[str[i]-71]=1;//出现一次
b[str[i]-71]=i;//记录出现第一次的位置
}
}
for(int i=0;i<51;i++)
{
if(a[i]==1)
{
if(str[i]<='z'&&str[i]>='a')
temp=b[i];
if(str[i]<='Z'&&str[i]>='A')
temp=b[i];
if(num>temp)
num=temp;
}
}
}
delete [] a,b;
return num;
}
};失败,没调试出来;下一轮做再说,
大神解法:一样哈希,只不过哈希表里面用自家的方式,然后选出1即可。


