第一个只出现一次的字符

来源:互联网 发布:徐克版笑傲江湖 知乎 编辑:程序博客网 时间:2024/06/09 16:21

题目:

在一个字符串(1<=字符串长度<=10000)中找到第一个只出现一次的字符,并返回它的位置。

解题思路:

1.共遍历两次字符串,第一次遍历统计每个字符出现的次数,第二次遍历遇到次数为1的字符返回它的位置即可。
2.char占一个字节,共8bit,共有256种可能(256个字符),我们开一个大小为256的数组来保存每个字符出现的次数。
3.时间复杂度O(n),空间复杂度O(1)

java实现:

public class Solution {    public int FirstNotRepeatingChar(String str) {        int [] alph = new int [256]; //char长度为8,因此一共有256个字符        for(int i = 0; i < str.length(); i ++){ //统计每个字母出现的次数            char c = str.charAt(i);            alph[c] += 1;  //数组的下标是字母的ASCII码,下标对应的值是该字母出现的次数        }        for(int i = 0; i < str.length(); i ++){            if(alph[str.charAt(i)] == 1)               return i; //找到第一个只出现一次的字符        }        return -1; //没找到第一个只出现一次的字符    }}
原创粉丝点击