LeetCode(剑指 Offer)- 50. 第一个只出现一次的字符
Posted 放羊的牧码
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode(剑指 Offer)- 50. 第一个只出现一次的字符相关的知识,希望对你有一定的参考价值。
题目链接:点击打开链接
题目大意:略
解题思路:略
相关企业
- 字节跳动
AC 代码
- Java
// 解决方案(1)
class Solution
public char firstUniqChar(String s)
HashMap<Character, Boolean> dic = new HashMap<>();
char[] sc = s.toCharArray();
for(char c : sc)
dic.put(c, !dic.containsKey(c));
for(char c : sc)
if(dic.get(c)) return c;
return ' ';
// 解决方案(2)
class Solution
public char firstUniqChar(String s)
Map<Character, Boolean> dic = new LinkedHashMap<>();
char[] sc = s.toCharArray();
for(char c : sc)
dic.put(c, !dic.containsKey(c));
for(Map.Entry<Character, Boolean> d : dic.entrySet())
if(d.getValue()) return d.getKey();
return ' ';
// 解决方案(3)
class Solution
public char firstUniqChar(String s)
int[] cnt = new int[26];
for (char c : s.toCharArray())
cnt[c - 'a']++;
for (int i = 0; i < s.length(); i++)
if (cnt[s.charAt(i) - 'a'] == 1)
return s.charAt(i);
return ' ';
- C++
// 解决方案(1)
class Solution
public:
char firstUniqChar(string s)
unordered_map<char, bool> dic;
for(char c : s)
dic[c] = dic.find(c) == dic.end();
for(char c : s)
if(dic[c]) return c;
return ' ';
;
// 解决方案(2)
class Solution
public:
char firstUniqChar(string s)
vector<char> keys;
unordered_map<char, bool> dic;
for(char c : s)
if(dic.find(c) == dic.end())
keys.push_back(c);
dic[c] = dic.find(c) == dic.end();
for(char c : keys)
if(dic[c]) return c;
return ' ';
;
以上是关于LeetCode(剑指 Offer)- 50. 第一个只出现一次的字符的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode(剑指 Offer)- 50. 第一个只出现一次的字符
LeetCode692. 前K个高频单词 / 剑指 Offer 50. 第一个只出现一次的字符 / 剑指 Offer 51. 数组中的逆序对 / 2. 两数相加