package main /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param str string字符串 * @return int整型 */ func FirstNotRepeatingChar(str string) int { // write code here m := make(map[rune]int) var ( charQueue []rune indexQueue []int ) for i, s := range str { if _, ok := m[s]; !ok { // 第一次出现 m[s] = i charQueue = append(charQueue, s) indexQueue = append(indexQueue, i) } else { // 已经出现过 m[s] = -1 // 排除重复的 for len(charQueue) != 0 { if m[charQueue[0]] != -1 { break } charQueue = charQueue[1:] indexQueue = indexQueue[1:] } } } if len(indexQueue) == 0 { return -1 } return indexQueue[0] }