本题为剑指offer面试题35
牛客网测试地址:https://www.nowcoder.com/questionTerminal/1c82e8cf713b4bbeb2a5b31cf5b0417c
- 时间限制:1秒空间限制:32768K
- 算法知识视频讲解
在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置。如果字符串为空,返回-1
package go.jacob.day509; /* * 字符char的范围是-128到127,不仅仅是a-z */ public class Demo2 { public int FirstNotRepeatingChar(String str) { if (str == null || str.equals("")) return -1; char[] chars = str.toCharArray(); int[] arr = new int[256]; for (int i = 0; i < chars.length; i++) arr[hash(chars[i])]++; int index = 0; for (int i = 0; i < chars.length; i++) { if (arr[hash(chars[i])] == 1) { index = i; break; } } return index; } // 为字符建立哈希映射,映射数组的下标 private int hash(char c) { return c + 128; } }