387. First Unique Character in a String

Given a string, find the first non-repeating character in it and return it's index. If it doesn't exist, return -1.

/**
 * @param {string} s
 * @return {number}
 */
var firstUniqChar = function(s) {
    //这个还有一个巧妙的Java方法
    var temp = [];
    var hasOccur = {};
    var num = s.length;
    for (var i = 0; i0 ? s.indexOf(temp[0]) : -1;
};

这里还有一个比较巧妙的Java方法:

public class Solution {
    public int firstUniqChar(String s) {
        if (s == null || s.equals("")) return -1;
        char[] c = s.toCharArray();
        int[] cnt = new int[256];
                
        for (int i = 0; i < c.length; i++) {
            cnt[c[i]]++;
        }

        for (int i = 0; i < c.length; i++) {
            if (cnt[c[i]] == 1) return i; 
        }
        return -1;
    }
}

在这个方法里,使用了一个cnt数组,其下标是每个出现过的字母的ASC码,值是其出现的次数。对比我的方法,它节省了在temp数组里搜寻这个字母出现位置的时间。

你可能感兴趣的:(387. First Unique Character in a String)