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 '#';
}

results matching ""

    No results matching ""