Skip to content

Latest commit

 

History

History
88 lines (73 loc) · 1.73 KB

File metadata and controls

88 lines (73 loc) · 1.73 KB

题目描述

在字符串 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 ' '

Java

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 ' ';
    }
}

JavaScript

/**
 * @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 ' '
};

...