跳至主要內容

剑指 Offer 50. 第一个只出现一次的字符


剑指 Offer 50. 第一个只出现一次的字符open in new window

🟢   🔖  队列 哈希表 字符串 计数  🔗 LeetCodeopen in new window

题目

某套连招动作记作仅由小写字母组成的序列 arr,其中 arr[i]i 个招式的名字。请返回第一个只出现一次的招式名称,如不存在请返回空格。

示例 1:

输入:arr = "abbccdeff"

输出:'a'

示例 2:

输入:arr = "ccdd"

输出:' '

限制:

  • 0 <= arr.length <= 50000

解题思路

使用哈希表统计每个字符出现的频率,然后再遍历一遍,返回第一个频率为 1 的字符即可,如果没有则返回空格。

代码

/**
 * @param {string} arr
 * @return {character}
 */
var dismantlingAction = function (arr) {
	let count = new Map();
	for (let i of arr) {
		if (count.has(i)) {
			count.set(i, count.get(i) + 1);
		} else count.set(i, 1);
	}
	for (let i of arr) {
		if (count.get(i) == 1) {
			return i;
		}
	}
	return ' ';
};