题目描述
在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).

解答:
public class Q_34 {

public int FirstNotRepeatingChar(String str) {
    HashMap<Character, Integer> map = new HashMap<Character, Integer>();//存放字母在数组中的位置
    int[] num = new int[52];//存放字母在字符串中的位置,若重复则改为-1
    for (int m = 0; m < num.length; m++) {
        num[m]=-1;
    }
    char[] arr = str.toCharArray();
    int index = 0;//不同字母的个数
    for (int i = 0; i < arr.length; i++) {
        Integer add = map.get(arr[i]);
        if (add == null) {
            map.put(arr[i], index);
            num[index] = i;
            index++;
        } else {
            num[add] = -1;
        }
    }
    for (int j = 0; j < num.length; j++) {
        if (num[j] > -1) {
            return num[j];
        }
    }
    return -1;
}

public static void main(String[] args) {
    System.out.println(new Q_34().FirstNotRepeatingChar("aAbaAb"));
}

}