题解 | #第一个只出现一次的字符#

第一个只出现一次的字符

https://www.nowcoder.com/practice/1c82e8cf713b4bbeb2a5b31cf5b0417c

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]
}

全部评论

相关推荐

07-11 11:15
中南大学 Java
好可爱的hr姐姐哈哈哈哈
黑皮白袜臭脚体育生:兄弟们貂蝉在一起,吕布开了
点赞 评论 收藏
分享
自学java狠狠赚一...:骗你点star的,港卵公司,记得把star收回去
点赞 评论 收藏
分享
机械打工仔:有说的你怀疑一下就行了,直接问也太实诚了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务