剑指-在字符串中找出第一个只出现一次的字符

来源:互联网 发布:淘宝平面模特兼职 编辑:程序博客网 时间:2024/04/29 10:16

题目:
在字符串中找出第一个只出现一次的字符. 如输入abaccdeff,则输出b

思路:
可以定义哈希表的Key是字符,Value是该字符出现的次数. 这样需要扫描字符串两次,第一次扫描,每扫描到一个字符就在哈希表的对应项次数加1. 接下来第二次扫描时,每扫描一个字符就能获取到该字符出现的次数. 本题比较特殊,简单的哈希表就能满足需求.字符char是一个长8位的数据类型,共有256中可能. 于是创建一个256的数组,每个字符的ASCII码值作为数组的下标,其值对应字符次数. 这样就创建了一个256大小,以字符ASCII码作为键值的哈希表.

public static void main(String[] args) {    String str = "abaccdeff";    System.out.println(firstNotRepeatingChar(str));}private static char firstNotRepeatingChar(String str) {    char[] hasTable = new char[1<<8];    for (int i = 0; i < str.length(); i++) {        hasTable[str.charAt(i)]++;    }    for (int i = 0; i < str.length(); i++) {        if (hasTable[str.charAt(i)] == 1) {            return str.charAt(i);        }    }    return 0;}
0 0
原创粉丝点击