第一个只出现一次的字符
题目描述:在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写,从0开始计数)
分析:这题我们看到题目后可以发现,因为它的字符串长度是有限的,而且我们需要找到只出现一次的字符,我们可以首先考虑用 Hashmap 这样的数据结构来把所有出现过的字符和他们对应的出现次数记录下来。接着,因为我们需要找到第一个只出现一次的字符,所以我们还需要把整个输入的字符串再遍历一遍,然后遍历时我们检测当前字符的出现次数在我们的 hashmap 里是不是 1,如果我们一旦遇到符合条件的字符,直接返回他的位置,因为我们只要第一个符合条件的字符。所以这题分两步:
- 创建一个 hashmap,然后遍历整个字符串一遍,记录下每个字符出现的次数;
- 再次遍历整个字符串,根据我们前面存储的 hashmap 找哪个字符只出现过一次,直接返回他的位置。
这里有个重点是,题目里说,字符需要区分大小写,因为我们这里是直接存储的字符,所以我们并没有改变他的大小写,所以不用进行额外的操作。但是如果题目产生变形,不需要区分大小写,我们可以在存储时把所有的字符都变成大写或者小写,放进 hashmap 的 keySet 里,然后找的时候也进行相应的变形,就可以了。
PS:与牛客相同!
代码: