- 用数组记录字符出现的顺序,数组的下标对应字符的ascii值
byte[] order = new byte[128];
byte index = 1;
public void Insert(char ch)
{
if(order[ch]==0)
{
order[ch] = index;
index++;
}
else{
order[ch] = -1;
}
}
// return the first appearence once char in current stringstream
public char FirstAppearingOnce()
{
if(index==1)
{
return '#';
}
int min = Integer.MAX_VALUE;
int index2 = 0;
for(int i=0;i<128;i++)
{
if(order[i]!=0&& order[i]!=-1 &&order[i]<min)
{
min = order[i];
index2 = i;
}
}
if(index2==0)
{
return '#';
}
else{
return (char) index2;
}
}