387. First Unique Character in a String
找出字符串中第一个没有重复的字符。建立一个简单的字母哈希表,进行计数和检查。
public int firstUniqChar(String s) {
int length = 'z' - 'A' + 1;
int[] hash = new int[length]; // init with 0
// count
for (int i = 0; i < s.length(); i++) {
hash[s.charAt(i) - 'A']++;
}
// check
for (int i = 0; i < s.length(); i++) {
if (hash[s.charAt(i) - 'A'] == 1) return i;
}
return -1;
}
index 0 1 .. 58
A B .. z
count 0 0 .. 0
求流中第一个只出现一次的字符,用stringbuffer。如果是string必须初始化为"",因为如果一个string指向没有分配内存空间的时候,会打印出"null"字符串
public static String valueOf(Object obj) {
return (obj == null) ? "null" : obj.toString();
}
//Insert one char from stringstream
char[] hash = new char[256];
//StringBuffer s=new StringBuffer();
String s = ""; // 必须初始化。。否则是null
public void Insert(char ch)
{
s += ch;
//s.append(ch);
hash[ch]++;
}
//return the first appearence once char in current stringstream
public char FirstAppearingOnce()
{
//char[] str=s.toString().toCharArray();
for (int i = 0; i < s.length(); i++) {
if (hash[s.charAt(i)] == 1) return s.charAt(i);
}
return '#';
}