给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回-1
。
我们可以对字符串进行两次遍历,在第一次遍历时,我们使用哈希映射统计出字符串中每个字符出现的次数,在第二次遍历时,我们只要遍历到了一个只出现一次的字符,那么就返回它的索引,否则在遍历结束后返回-1
即可。当然此处是使用的哈希表进行存储,如果使用两个数组进行存储的话可能会快一些,哈希表要计算HashCode
,然后再按照HashCode
取索引,当字符串比较长的时候可能还会引起Hash
表底层数据的扩容从而产生ReHash
,同时Hash
碰撞也是要考虑的成本。首先建立一个哈希表,直接构建没有原型的对象即可,之后使用数组的原型方法forEach
循环这个字符串,构建哈希表,在键不存在时将此键的值设置为1
,否则就自增值,之后获取字符串长度,建立循环,如果这个键在哈希表中的值为1
,则返回该值的索引,如果没找到则返回-1
即可。