- 209. First Unique Character in a
- 209. First Unique Character in a
- 2018-10-19 First Unique Characte
- LeetCode.387字符串中的第一个唯一字符
- Unique/Duplicate String
- [刷题防痴呆] 0387 - 字符串中的第一个唯一字符 (Fir
- First Unique Character in a Stri
- [LeetCode]First Unique Character
- 387 First Unique Character in a
- Leetcode PHP题解--D100 387. First
给出一个字符串,找出第一个只出现一次的字符。
样例
对于 "abaccdeff", 'b'为第一个只出现一次的字符.
思路
- 对于当前字符,和后面每个字符相比较,如果没发现重复字符,则当前字符即为题目解,但此做法时间复杂度为 O(n),会超时
- 定义一个数组或者哈希表来记录每个字符出现次数,找到出现次数为 1 的字母
代码
- 遍历两次
public class Solution {
/**
* @param str: str: the given string
* @return: char: the first unique character in a given string
*/
public char firstUniqChar(String str) {
if (str == null) {
return ' ';
}
int[] records = new int[256];
for (int i = 0; i < str.length(); i++) {
records[str.charAt(i) - 'a']++;
}
for (int i = 0; i < str.length(); i++) {
if (records[str.charAt(i) - 'a'] == 1) {
return str.charAt(i);
}
}
return ' ';
}
}
- 遍历一次
public class Solution {
/**
* @param str: str: the given string
* @return: char: the first unique character in a given string
*/
public char firstUniqChar(String str) {
Map<Character, Integer> map = new LinkedHashMap<>();
Set<Character> set = new HashSet<>();
for (int i = 0; i < str.length(); i++) {
if (set.contains(str.charAt(i))) {
map.remove(str.charAt(i));
} else {
map.put(str.charAt(i), i);
set.add(str.charAt(i));
}
}
return map.size() == 0 ? ' ' : map.entrySet().iterator().next().getKey();
}
}
网友评论