387. First Unique Character in a String

来源:互联网 发布:大数据课程培训 编辑:程序博客网 时间:2024/06/06 01:23

//本文内容来自StarSight,欢迎访问。


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.

Note: You may assume the string contain only lowercase letters.


中规中矩的解法:

public class Solution {    public int firstUniqChar(String s) {        int[] exist = new int[26];        for(int i = 0;i < s.length();i++){            char c = s.charAt(i);            if(exist[c-'a']==0){                exist[c-'a'] =i+1;            }            else                exist[c-'a'] =-1;        }                int min = 65535;        for(int i =0;i<26;i++){            if(exist[i]<min&&exist[i]>0)                min =exist[i];                        }        if(min==65535)            return -1;        return min-1;    }}


之前还加上了HashMap,其实完全没必要

    public int firstUniqChar(String s) {        if(s.equals(""))            return -1;        Map<Character,Integer> map = new HashMap<>();        int[] exist = new int[26];        for(int i = 0;i < s.length();i++){            char c = s.charAt(i);            Integer it = map.get(c);            if(it==null){                map.put(c,i+1);                exist[c-'a'] =i+1;            }            else                exist[c-'a'] =65535;        }                int min = 65535;        for(int i =0;i<26;i++){            if(exist[i]<min&&exist[i]>0)                min =exist[i];                        }        if(min==65535)            return -1;        return min-1;    }



0 0