← 返回文章列表

ARTICLE

剑指Offer之第一个只出现一次的字符位置

在一个字符串(1<=字符串长度<=10000,全部由大写字母组成)中找到第一个只出现一次的字符,并返回它的位置。

在一个字符串(1<=字符串长度<=10000,全部由大写字母组成)中找到第一个只出现一次的字符,并返回它的位置。

public class Solution {
    public int FirstNotRepeatingChar(String str) {
        int len = str.length();
        if(len == 0){
            return -1;
        }
        int kl = 256;
        int nums[] = new int[kl];
        int index[] = new int[kl];
        for(int i = 0;i < len;i ++){
            char ch = str.charAt(i);
            nums[ch]++;
            index[ch] = i;
        }
        int k = kl + 1;
        for(int i = 0;i < kl;i ++){
            if(nums[i] == 1){
                if(index[i] < k){
                    k = index[i];
                }
            }
        }
        return k;
    }
}