387. First Unique Character

来源:互联网 发布:js 显示div 编辑:程序博客网 时间:2024/06/10 08:51

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

s = "leetcode"return 0.s = "loveleetcode",return 2.

我的解法类似 fourSumII一题中的解法,将字符和出现的次数放入hashmap中,然后便利数组 来对应map的key,查找第一个只出现一次的字符

代码如下:

class Solution {public int firstUniqChar(String s) {    Map<Character,Integer> uniqChar=new HashMap<Character,Integer>();    Character i;        for(int j=0;j<s.length();j++){            i=s.charAt(j);            uniqChar.put(i, uniqChar.getOrDefault(i,0)+1);    }        for(int j=0;j<s.length();j++){            i=s.charAt(j);            if(1==uniqChar.get(i))                return j;        }    return -1;}}

虽然通过了,但是运行时间有点长

下面是别人的写法
(用空间换时间,用长度为26的数组来记录 对应的字母出现的次数 ,a对应0,以此类推)

class other {public int firstUniqChar(String s) {    int freq[]  = new int[26];    for(int i=0;i<s.length();i++){        freq[s.charAt(i) - 'a'] +=1;    }    for(int i = 0;i<s.length();i++){        // System.out.println(freq[s.charAt(i)-'a']);        if(freq[s.charAt(i)-'a'] == 1){            return i;        }    }    return -1;}}
原创粉丝点击