📜  资质| Wipro模拟测试|问题17(1)

📅  最后修改于: 2023-12-03 14:57:48.151000             🧑  作者: Mango

资质 | Wipro模拟测试 | 问题17

问题描述

在一个字符串中找到第一个只出现一次的字符。比如字符串“abaccdeff”中,第一个只出现一次的字符是'b'。

解题思路

本题可以使用哈希表(Hash Table)来解决。

首先需要遍历一遍字符串,将每个字符出现的次数存储在哈希表中。然后再依次遍历每个字符,查找其在哈希表中出现的次数,如果只出现了一次,则返回该字符。如果整个字符串遍历完了也没有找到符合条件的字符,则返回空字符。

解题步骤
1. 创建哈希表

遍历字符串,将每个字符及其出现的次数存储在哈希表中。

hash_table = {}
for char in str:
    if char not in hash_table:
        hash_table[char] = 1
    else:
        hash_table[char] += 1
2. 查找第一个只出现一次的字符

依次遍历每个字符,查找其在哈希表中出现的次数,如果只出现了一次,则返回该字符。如果整个字符串遍历完了也没有找到符合条件的字符,则返回空字符。

for char in str:
    if hash_table[char] == 1:
        return char
return ''
完整代码
def find_first_unique_char(str):
    hash_table = {}
    for char in str:
        if char not in hash_table:
            hash_table[char] = 1
        else:
            hash_table[char] += 1
    for char in str:
        if hash_table[char] == 1:
            return char
    return ''
测试样例
assert find_first_unique_char('abaccdeff') == 'b'
assert find_first_unique_char('abcdefg') == 'a'
assert find_first_unique_char('aabbccddeeff') == ''