最强解析面试题:第一个只出现一次的字符

Posted 魏小言

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了最强解析面试题:第一个只出现一次的字符相关的知识,希望对你有一定的参考价值。


最强解析面试题:第一个只出现一次的字符「建议收藏!」

文章讲解 “ 第一个只出现一次的字符 ” 经典面试题,包含思路及源码,及解惑!

题目

在一个长为 字符串中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).(从0开始计数)
数据范围:0 \\le n \\le 100000≤n≤10000,且字符串只有字母组成。
要求:空间复杂度 O(n)O(n),时间复杂度 O(n)O(n)

示例1

输入:
“google”
返回值:
4

思路

1、使用map数据结构存储每个字符的出现次数
2、遍历字符串,找出出现次数为1的下标

代码

package main

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * @param str string字符串
 * @return int整型
 */
func FirstNotRepeatingChar(str string) int {
   // write code here
   m := make(map[byte]int)
   b := []byte(str)
   for i, _ := range b {
       m[b[i]]++
   }
   for i, _ := range b {
      if m[b[i]] == 1 {
         return i
      }
   }
   return -1
}

附录

忙碌和早起

以上是关于最强解析面试题:第一个只出现一次的字符的主要内容,如果未能解决你的问题,请参考以下文章

[剑指offer]面试题35:第一个只出现一次的字符

剑指Offer---面试题35:第一个只出现一次的字符

面试题50:第一个只出现一次的字符(C++)

剑指offer-面试题50-第一个只出现一次的字符-哈希表

面试题之在字符串中查找出第一个只出现一次的字符的位置

剑指Offer-时间效率与空间效率的平衡面试题50.2:字符流中第一个不重复的字符