在字符串 s 中找出第一个只出现一次的字符。如果没有,返回一个单空格。
示例:
s = "abaccdeff"
返回 "b"
s = ""
返回 " "
```
**限制:**
- `0 <= s 的长度 <= 50000`
## 解法
有序字典解决。
<!-- tabs:start -->
### **Python3**
```python
import collections
class Solution:
def firstUniqChar(self, s: str) -> str:
if s == '':
return ' '
cache = collections.OrderedDict()
for c in s:
cache[c] = 1 if cache.get(c) is None else cache[c] + 1
for k, v in cache.items():
if v == 1:
return k
return ' '
class Solution {
public char firstUniqChar(String s) {
if ("".equals(s)) {
return ' ';
}
Map<Character, Integer> map = new LinkedHashMap<>();
char[] chars = s.toCharArray();
for (char c : chars) {
map.put(c, map.get(c) == null ? 1 : 1 + map.get(c));
}
for (Map.Entry<Character, Integer> entry : map.entrySet()) {
if (entry.getValue() == 1) {
return entry.getKey();
}
}
return ' ';
}
}
/**
* @param {string} s
* @return {character}
*/
var firstUniqChar = function(s) {
let t = new Array(26).fill(0)
let code = ('a').charCodeAt()
for(let i=0;i<s.length;i++) {
t[s[i].charCodeAt() - code]++
}
for(let i=0;i<s.length;i++) {
if(t[s[i].charCodeAt() - code] === 1) return s[i]
}
return ' '
};