题目
题目链接
https://leetcode-cn.com/problems/di-yi-ge-zhi-chu-xian-yi-ci-de-zi-fu-lcof/
具体代码
集合缓存法
class Solution {
public char firstUniqChar(String s) {
// 用 Map 缓存,key:字节,value:是否重复出现
// 最后只要找到没有重复出现的 value 返回即可
// 因为题目要求返回第一个非重复字节,因此要求是有序的,用 LinkedHashMap
Map<Character, Boolean> map = new LinkedHashMap();
for (Character character : s.toCharArray()) {
map.put(character, map.containsKey(character));
}
for (Character key : map.keySet()) {
if (!map.get(key)) {
return key;
}
}
return ' ';
}
}
索引比较法
class Solution {
public char firstUniqChar(String s) {
// 比较第一个与最后一次出现的索引是否相同
// 简单好理解,就是效率会低点
for (char str : s.toCharArray()) {
if (s.indexOf(str) == s.lastIndexOf(str)) {
return str;
}
}
return ' ';
}
}