387. First Unique Character in a String

来源:互联网 发布:java web接口开发 编辑:程序博客网 时间:2024/06/12 22:26

1.题目描述

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.
2.题目分析

   这是一道easy难度的算法题,一般像这种字符串问题,最好想到是O(n^2)时间复杂度的暴力破解,可是这种做法对于这道题好像还不行,实现起来不能够通过全部用例。另一种比较容易想到的方法是对于字符串,先O(n)时间去将每一个字符出现次数记录下来,再根据存储的结果,解决题目提出的问题。

3.算法实现

  就是借助了一个256大小的int数组,存储每一个可能出现的字符次数。实现如下:

public class Solution {
    public int firstUniqChar(String s) {
        
        if(s==null||s.length()==0){ // 边界处理
            return -1;
        }
        int len = s.length();
        
        int[] result = new int[256];// 存储对应字符出现的次数
        
        for(int i=0;i<len;i++){
            result[s.charAt(i)-'a']++;
        }
        for(int i=0;i<len;i++){
            if(result[s.charAt(i)-'a']==1){
                return i;
            }
        }
        return -1;
    }
}

4.总结

   这道题,我开始用破解做,但总是不能全部用例通过,中途有想用O(n)时间复杂度算法来做,也就是现在这个算法,一般涉及字符出现次数,第一个出现不重复字符之类的字符串问题,大都可以按照这道题的思路去解题。