leetcode-387

79 阅读1分钟

题目描述:具体描述见原题。简单来说就是寻找给定字符串中第一个不重复的字符。

解题思路:简单题,采用映射的思想,将每个字符数量按照字典序映射到长度为26的切片里。最后遍历找到字符串,找到第一个映射值为1的字符即可。具体过程见代码。

具体代码:

func firstUniqChar(s string) int {
  dic := make([]int, 26)
	for _, c := range s{
		dic[c-'a']++ // 将每个字符数量映射到切片对应位置
	}
	for i, d := range s{ // 遍历给定字符串
		if dic[d-'a'] == 1 {  // 如果该字符对应切片中值为1,返回
			return i
		}
	}
	return -1 // 遍历一圈没找到,返回-1
}

补充说明:这种映射思想在hash相关中经常使用。雷子已经放假了,开始讨论去成都看好看小姑娘的计划了。