📅  最后修改于: 2023-12-03 15:07:33.366000             🧑  作者: Mango
该问题要求实现一个函数,以字符串作为输入参数,将根据以下规则进行操作:
首先根据题目描述,应该明确函数的输入和输出:
def first_nonrepeat(string: str) -> str:
pass
接下来考虑如何实现这个函数,可以使用哈希表来记录每个字符出现的次数,同时用一个队列来记录第一个不重复的字符的顺序,最终输出队列的第一个元素即可。
首先遍历一次字符串,记录每个字符出现的次数:
def first_nonrepeat(string: str) -> str:
count = {}
for c in string:
count[c] = count.get(c, 0) + 1
# 代码片段1
接下来再遍历一次字符串,将第一个不重复的字符加入队列:
def first_nonrepeat(string: str) -> str:
count = {}
for c in string:
count[c] = count.get(c, 0) + 1
queue = []
for c in string:
if count[c] == 1:
queue.append(c)
if len(queue) > 1:
break
# 代码片段2
如果队列中有元素,则输出第一个元素,否则输出字符串的第一个字符:
def first_nonrepeat(string: str) -> str:
count = {}
for c in string:
count[c] = count.get(c, 0) + 1
queue = []
for c in string:
if count[c] == 1:
queue.append(c)
if len(queue) > 1:
break
return queue[0] if queue else string[0]
def first_nonrepeat(string: str) -> str:
count = {}
for c in string:
count[c] = count.get(c, 0) + 1
queue = []
for c in string:
if count[c] == 1:
queue.append(c)
if len(queue) > 1:
break
return queue[0] if queue else string[0]